【问题标题】:Url arguments with Django ajax datatable?带有 Django ajax 数据表的 URL 参数?
【发布时间】:2016-09-17 20:38:00
【问题描述】:

我有一个模板,usersummary.html。它依靠 URL 参数显示有关特定用户的详细信息。我想在数据表中显示一些数据,这将涉及基于相同 URL 参数显示数据的 AJAX 数据表。

使用 django-datatables-view:

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 

我认为像下面这样向 testdatatableJSON 类添加一个方法会起作用,但可惜不是(可能是因为通过 AJAX 使用时实际上没有传入 id 参数)。如果我传入一个硬编码示例来测试它,比如“id=1”,它就可以正常工作。

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

有什么想法吗?

谢谢!

【问题讨论】:

    标签: jquery python ajax django datatable


    【解决方案1】:

    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 
    

    然后将filter_queryset方法添加到testdatatableJSON类中

    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
    

    希望这会奏效..

    【讨论】:

      猜你喜欢
      • 2020-08-30
      • 2016-08-07
      • 2020-08-14
      • 1970-01-01
      • 2016-11-26
      • 2019-07-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多