我正在使用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]
答案 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