2014-01-14 42 views
0

我正在使用django-extra-views爲了在我的Django ListViews中有可排序的表。django-extra-views和SortableListMixin配置混淆

我不是100%確定爲什麼我不能工作,但我總是發現從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

你需要調用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