Я пытаюсь выложить django страницу, которая перечисляет все записи к году, они были созданы. Так, например:
2010:
Примечание 4
Примечание 5
Примечание 6
2009:
Примечание 1
Примечание 2
Примечание 3
Это оказывается более трудным, чем я ожидал бы. Модель, из которой прибывают данные, ниже:
class Note(models.Model):
business = models.ForeignKey(Business)
note = models.TextField()
created = models.DateTimeField(auto_now_add=True)
updated = models.DateTimeField(auto_now=True)
class Meta:
db_table = 'client_note'
@property
def note_year(self):
return self.created.strftime('%Y')
def __unicode__(self):
return '%s' % self.note
Я попробовал несколько различных путей, но, кажется, сталкиваюсь с препятствиями вниз каждый путь. Я предполагаю, что эффективная 'группа' методом добилась бы цели (бэкенд PostGres DB), но я, может казаться, не нахожу функциональности Django, которая поддерживает его. Я пытался получить отдельные годы от базы данных, но я изо всех сил пытался найти способ отфильтровать поля даты и времени просто значением года. Наконец, я пытался добавить note_year @property, но потому что он получен, я не могу отфильтровать те значения.
Какие-либо предложения для изящного способа сделать это? Я полагаю, что это должно быть довольно просто, но у меня есть heckuva время с ним. Любые идеи очень ценятся.
Либо создайте собственный SQL, либо используйте
date_list = Note.objects.all().dates('created', 'year')
for years in date_list:
Note.objects.filter(created__year = years.year)
Так это делается в общих представлениях на основе даты.
Вы можете использовать django.views.generic.date_based.archive_year или использовать year поиск по полю.