2012-04-27 5 views
2

私はhtmlページに表示するdjangoモデルオブジェクトを取得しようとしています。もちろん、{{object}}を使用しようとすると、エラーが発生します。javascriptを使用してdjangoモデルのデータベースからデータを取得することは可能ですか?

djangoデータモデルを正しく取得し、javascriptを使用して属性を操作するにはどうすればよいですか?

URL:

('^all_companies$', 'companies.views.all_companies') 

ビュー:

def all_companies(request): 
    companies = Company.objects.all().order_by('id')[:5]; 
    return direct_to_template(request, 'all_companies.html', {'companies': companies}); 

HTML:

{% block sidebar %} 
    <div id="sidebar"> 
     <!-- like google maps, short list of company info --> 
     <ul> 
      {% for comp in companies %} 
       <li>{{ comp }}</li>     
      {% endfor %} 
     </ul> 
    </div> 
{% endblock %} 

JS:

var tmp = {{ companies }} 

答えて

4

:テンプレートで

from django.core import serializers 
json_serializer = serializers.get_serializer("json")() 
companies = json_serializer.serialize(Company.objects.all().order_by('id')[:5], ensure_ascii=False) 

var companies = '{{ companies|escapejs }}'; 

これは、JSにあなたのデータモデルを取得するためだけです。それらを操作するには、JS(AJAXによる)から呼び出されるいくつかのビューを作成する必要があります。 JSONが返されるはずです。ビューから単にJSONだけを返す方法については、 http://djangosnippets.org/snippets/622/またはhttp://djangosnippets.org/snippets/2102/をチェックしてください。

+0

jsからビューを呼び出すにはどうすればいいですか? – iCodeLikeImDrunk

+0

jQueryを使用している場合:http://api.jquery.com/jQuery.getJSON/ – frnhr

0

会社のモデルデータをjsonにシリアライズする必要があるので、javascriptでそれを読み取ることができます。

したがって、モデル化された2つの変数、つまり現在持っている企業とシリアル化されたデータを保持するcompanies_jsonが必要です。

from django.core import serializers 
companies_json = serializers.serialize("json", Company.objects.all()) 

これはテストしていません。あなたのビューで