무엇이 잘못 될지 모르지만 CBV에서 생성 된 목록을 정렬 할 수 없습니다. 나는 장고 설명서 https://docs.djangoproject.com/en/1.6/topics/class-based-views/mixins/#using-singleobjectmixin-with-listview에있는 지침을 따랐다. 이 모델은 다음과 같다 :목록보기에서 Django CBV가 작동하지 않습니다.
class Event(models.Model):
...
venue = models.ForeignKey(
'app_place.PointOfInterest',
related_name='events',
verbose_name=_('Event Place'),
)
start = models.DateTimeField(
default=timezone.now(),
verbose_name=_('Start date'),
)
def sorted_events_set(self):
return self.event_set.order_by('start')
그리고 views.py에는 다음이 포함
class PoiDetail(SingleObjectMixin, ListView):
...
def get_queryset(self):
return self.object.events.all()
다 잘하지만 HTML 페이지의 목록은 (그런데 반전) ID에 의해 orderd된다. 그래서 order_by를 추가했습니다.
return self.object.events.all().order_by('start')
그러나 작동하지 않습니다 (순서는 동일하게 유지됨). 무슨 일 이니? 이것이 올바른 진행 방법이 아닌가? 또한 다른 질문에 제안 된대로 특정 순서를 모델에 추가하려고했지만 다른 오류가있어서 sorted_events_set
메서드를 사용하여 return 문을 작성하는 방법을 알지 못합니다. 도움 주셔서 감사합니다! 여기에 편집
는 전체 views.py
class PoiDetail(SingleObjectMixin, ListView):
template_name = 'app_place/poi.html'
def get(self, request, *args, **kwargs):
self.object = self.get_object(queryset=PointOfInterest.objects.all())
return super(PoiDetail, self).get(request, *args, **kwargs)
def get_context_data(self, **kwargs):
context = super(PoiDetail, self).get_context_data(**kwargs)
context['poi'] = self.object
return context
def get_queryset(self):
return self.object.events.all().order_by('start')
입니다 그리고 이것은 템플릿입니다 : 모든
{% for event in poi.events.all %}
<a href="/e20/event/{{event.id}}" class="list-group-item">
<h4 class="list-group-item-heading">{{ event.title }}</h4>
<p class="list-group-item-text">{{event.description}}</p>
</a>
{% endfor %}
전체보기 및 템플릿을 템플릿에 게시 할 수 있습니까? – knbk
아마도'{poi.events.all %}의 이벤트에 대한 % {'를 {page_obj %의 이벤트에 대한 %}로 대체해야합니다. – danihp
작동하지 않습니다 – Attilio