django-extra-views和SortableListMixin配置混乱

时间:2014-01-14 03:25:13

标签: django

我正在使用django-extra-views以便在我的Django ListViews中拥有可排序的表。

我不是百分之百确定为什么我不能让它工作,但我总是发现在tests.py困难的wrt模板上工作。

所以我在views.py

中有这个
class PartTypePartList(SortableListMixin, generic.ListView):
  model = PartNumber
  template_name = 'inventory/newparttype_list.html'
  sort_fields = ['name',]
  paginate_by = 25

  def get_queryset(self):
    self.parttype = self.kwargs['parttype']
    return PartNumber.objects.filter(fds_part_type=self.parttype)

  def get_context_data(self, **kwargs):
    context = super(PartTypePartList, self).get_context_data(**kwargs)
    context['parttype'] = self.parttype
    return context

在urls.py中

  url(r'^newparttype/(?P<parttype>\d{2})/$', views.PartTypePartList.as_view(), name='new_part_type_view'),

有了这两个,我们就会按预期获得列表。

在相关模板中:

  <a href="{{ request.path }}{{ sort_helper.get_sort_query_by_name }}">Name</a>
  <a href="{{ request.path }}{{ sort_helper.get_sort_query_by_name_asc }}">asc name</a>
  <a href="{{ request.path }}{{ sort_helper.get_sort_query_by_name_desc }}">desc name</a>
  {% if sort_helper.is_sorted_by_name %} ordered by name {{ sort_helper.is_sorted_by_name }} {% endif %}

问题在于没有发生排序。特别是,

{{ sort_helper.get_sort_query_by_name }} and 
{{ sort_helper.get_sort_query_by_name_asc }} and
{{ sort_helper.get_sort_query_by_name_desc }} 

每个都返回一个空字符串。

我做错了什么?

我正在使用django-tables2,但主人承认他不会继续开发它,我不够熟练或时间不够丰富,无法自己承担。

[EDIT] 我相信这仍然值得一个解决方案,但我重新将视图重写为FBV而不是CBV,并相应地操纵数据 [/EDIT]

1 个答案:

答案 0 :(得分:1)

您需要调用get_queryset父方法:

def get_queryset(self):
    self.parttype = self.kwargs['parttype']

    qs = super(PartTypePartList, self).get_queryset()
    qs = qs.filter(fds_part_type=self.parttype)

    return qs