У меня проблемы с CBW с Django 1.8. Я использую CBW, и, если возможно, я бы вообще не хотел использовать представления. Но я застреваю в попытке заказать результаты, которые у меня есть с запросами по умолчанию.Django order_with_respect_to reverse foreign_key
так, более подробная информация и пример: работа на Джанго 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')
, а затем файл шаблона непосредственно:
шаблон/MyApp/venue_detail.html>
<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. Значение первого места в списке - это место, где они в последний раз играли.
Я tryied несколько разных вещей, все не работает:
- добавления через параметров в ForeignKey. не работает
- пытается придерживаться логики в шаблоне. не работает (и кто бы это?)
- имея в Место проведения: упорядочивание [ «event_set»]
Так что, я бы очень хотел иметь решение без view.py, но только если возможно. Итак, какова была бы лучшая идея решить эту проблему?
- Возможно, есть простой способ добавить новый стол, чтобы помочь мне заказать эти вещи?
- Может быть, я могу добавить метод в мой класс, который примет группу в качестве аргумента, и я бы мог заказать ее, за исключением того, что django не позволяет заказывать вещи методом.
- Возможно, мне нужно переопределить диспетчер объектов, чтобы добавить эту возможность, но есть ли простой способ сделать это?
- Или это единственное решение, позволяющее пропустить просмотр без CBW?
- Или есть ли другие решения?
Изменить порядок на Событии, чтобы иметь дату и время. – Ben