Django: Фильтрация поля даты и времени *только* значение года?

Я пытаюсь выложить 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 время с ним. Любые идеи очень ценятся.

11
задан PlankTon 8 June 2010 в 12:57
поделиться

2 ответа

Либо создайте собственный SQL, либо используйте

date_list = Note.objects.all().dates('created', 'year')

for years in date_list:
    Note.objects.filter(created__year = years.year)

Так это делается в общих представлениях на основе даты.

31
ответ дан 3 December 2019 в 02:10
поделиться

Вы можете использовать django.views.generic.date_based.archive_year или использовать year поиск по полю.

3
ответ дан 3 December 2019 в 02:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: