Django Представление списка с сортировкой бюллетеней
У меня есть ListView бюллетеней, для которых я пытаюсь предоставить варианты заказа. Я использую выпадающий список для передачи параметра URL под названием sortBy
.
Я подтвердил с помощью оператора print в конце def get(self, request):
, что порядок queryset
меняется, как ожидалось, когда в sortBy
передаются разные значения.
Проблема, с которой я столкнулся, заключается в том, что хотя порядок queryset
меняется, как и ожидалось, это не отражается в myTemp.html
. Порядок отображаемых бюллетеней не меняется, хотя порядок queryset
меняется.
Что вызывает такое поведение?
Views.py
@method_decorator(login_required, name='dispatch')
class BulletinList(ListView):
model = Bulletin_VW
template_name = 'myTemp.html'
context_object_name = 'bulletins'
additional_context = {}
@method_decorator(login_required)
def dispatch(self, *args, **kwargs):
return super().dispatch(*args, **kwargs)
def get_queryset(self):
queryset = Bulletin_VW.objects.filter(store_id=self.additional_context['storeID'],
entity_id=self.additional_context['entityID'])
ordering = self.get_ordering()
queryset = queryset.order_by(ordering)
return queryset
def get_context_data(self, *args, **kwargs):
self.object_list = self.get_queryset()
context = super(BulletinList, self).get_context_data(*args, **kwargs)
context.update(self.additional_context)
return context
def get_ordering(self):
ordering = self.request.GET.get('sortBy', 'Name')
sortDict = {'Name': 'author', 'Date-Newest': '-capture_date', 'Date-Oldest': 'capture_date'}
ordering = sortDict.get(ordering)
return ordering
def get(self, request):
if not validate_user_session(request.user.id):
return redirect('newSession')
currentSession = Current_Session_VW.objects.filter(user_id=request.user.id)[0]
storeID = currentSession.store_id
entityID = currentSession.entity_id
entStore = currentSession.entity_store_name
balance = get_balance(storeID, entityID)
self.additional_context['add1'] = add1
self.additional_context['add2'] = add2
self.additional_context['add3'] = add3
self.additional_context['add4'] = add4
self.additional_context['sys_bulletins'] = Bulletin_System_VW.objects.all()
self.additional_context['add5'] = add5
print(self.get_context_data())
return render(request, 'myTemp.html', self.get_context_data())
myTemp.html excerpt
{% for bulletin in bulletins %}
<div class="row">
<div class="col-sm-12">
<article class="media content-section">
<div class="media-body">
<div class="article-metadata">
<a class="mr-2" href="#">{{ bulletin.author }}</a>
<small class="text-muted">{{ bulletin.capture_date|date:"F d, Y" }}</small>
</div>
<h2><a class="article-title" href="{% url 'bulletin-detail' bulletin.bulletin_entity_store_id %}">{{ bulletin.title }}</a></h2>
<p class="article-content">{{ bulletin.content }}</p>
</div>
</article>
</div>
</div>
{% endfor %}