2016-05-20 31 views
1

私はテンプレートusersummary.htmlを持っています。 URLパラメータに依存して、特定のユーザーに関する詳細を表示します。私は、同じURLパラメータに基づいてデータを表示するAJAXデータテーブルを必要とするデータテーブルにいくつかのデータを表示したいと思います。ジャンゴ-のDataTableビューを使用してDjango ajaxデータテーブルのUrl引数?

views.py:

from django_datatables_view.base_datatable_view import BaseDatatableView 

def usersummary(request, id): 
    return render(request, 'app/usersummary.html') 

class testdatatableJSON(BaseDatatableView): 
    model = User 
    columns = ['item1', 'item2'] 
    # This class uses django-datatables-view 
    # It returns JSON for the datatable to consume via AJAX 
    # I'd like to filter it to display only data relating to the user id defined in the url for template usersummary.html 

urls.py

url(r'^(?P<id>\d+)/$', views.usersummary, name='usersummary'), 
url(r'^testdatatable/$', testdatatableJSON.as_view(), name='testdatatable') 

JS

$(document).ready(function() { 
    $('#table').DataTable({ 
    "ajax": "{% url 'testdatatable' %}" 
# This controls table in usersummary.html template 

私は追加することを考えたいですテスト可能なJSONへのメソッドc以下のようなlassは動作しますが、まあまあです(おそらく、idパラメータはAJAX経由で消費されたときに実際には渡されないからです)。 "id = 1"のように、ハードコードされたサンプルをテストするために渡すとうまくいきます。

def get_initial_queryset(self, **kwargs): 
    return User.objects.filter(id=self.kwargs['id']) 

ありがとうございます!

答えて

0

views.py

def usersummary(request, id): 
    return render(request,{'user_id':id}, 'app/usersummary.html') 

テンプレート

var user_id= {{user_id}} 
$('#table').DataTable({ 
"ajax": {"url":"{% url 'testdatatable' %}", 
"data":{"id":user_id}} 
# This controls table in usersummary.html template 

その後完全に働いた、これは動作します

def filter_queryset(self, qs): 
    # use request parameters to filter queryset 

    # simple example: 
    user_id = self.request.GET.get('id', None) 
    if user_id: 
     qs = qs.filter(id=user_id) 
    return qs 

希望..

+0

ようtestdatatableJSONクラスにfilter_querysetメソッドを追加:-) *ありがとうございました* ! – user6361549

関連する問題