2014-01-14 5 views
0

Я использую django-extra-views, чтобы иметь отсортированные таблицы в моем Django ListViews.django-extra-views and SortableListMixin Конфигурация путаницы

Я не уверен на 100%, почему я не могу заставить его работать, но я всегда находил работу с test.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, а не ОЦК и я манипулирование данных соответственно [/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 
Смежные вопросы