我在使用Django 1.8的CBW上遇到了麻烦。我使用CBW,如果可能的话,我想避免使用视图。但是我一直试图用默认查询来订购我的结果。
所以,更多信息和例子:在django 1.8.3上工作
有一些模特,乐队,可以在不同的场地巡回演出
myapp / models.py>
from django.db import models
class Band(models.Model):
name = models.CharField(max_length=512)
class Venue(models.Model):
name = models.CharField(max_length=512)
class Meta:
order_with_respect_to = 'VenueEvents'
class Event(models.Model):
datetime = models.DateTimeField()
name = models.CharField(max_length=512)
venue = models.ForeignKey(Venue, trough='VenueEvents')
band = models.ForeignKey(Band)
class Meta:
ordering ['venue', 'datetime']
myapp / view.py>
#Empty
myapp / url.py>
from django.conf.urls import url, patterns
from django.views.generic import DetailView
from myapp.models import Band
urlpatterns = patterns('',
url(r'^bands/(?P<pk>[\d]+)$', DetailView.as_view(model=Band), name='venue')
然后直接模板文件:
template / myapp / venue_detail.html&gt;
<html><body><ul><li>
{{ band.name }}
{% for event in band.event_set.all %}
{% ifchanged event.venue %}
{% if not forloop.first %}
</li><li>
{% endif %}
{{ event.datetime }}
{% endif %}
{{ event.name }}
{% endfor %}
</li></ul></body></html>
我希望在该页面上列出一个乐队在列出的所有场地,我希望它们按 event_set.datetime 排序。这意味着列出的第一个场地是他们上次参加比赛的场地。
我尝试了一些不同的东西,都没有用:
所以,我真的想要一个没有view.py的解决方案,但只有在可能的情况下。那么,解决这个问题最好的想法是什么?
答案 0 :(得分:0)
好像你使用order_with_respect_to
错了。
您应该order_with_respect_to = 'venue'
代替Event
。
请查看https://docs.djangoproject.com/en/1.8/ref/models/options/#order-with-respect-to,看看它是如何运作的。