сравнить поле года и месяца с датой больше - PullRequest
4 голосов
/ 13 февраля 2012

Я собираюсь сделать этот запрос:

today = datetime.date.today()
year=today.year
month=today.month
news=News.objects.filter(date__year__lt = year,date__month__lt=month)

Примечание: новостной объект имеет поле с именем date но я получаю эту ошибку:

Join on field 'date' not permitted. Did you misspell 'year' for the lookup type?

что ты думаешь?

заранее спасибо

Ответы [ 2 ]

10 голосов
/ 13 февраля 2012

Вы не можете добавить __lt на __year или __month.Только последний бит с двойным подчеркиванием считается квалификатором, все до того, как он будет обработан как обход, т.е. Django попытается найти поле с именем year в таблице соединений с именем date, что, очевидно, неверно.

Для чего-то подобного вам нужно просто сравнить дату напрямую:

date = datetime.date(year, month, 1)
news = News.objects.filter(date__lt=date)
2 голосов
/ 13 февраля 2012

У Django возникают проблемы с некоторыми поисками при работе с отношением (например, date__year__*).Я думаю, что это то, над чем они работают в будущих версиях.

Дает ли это приемлемый результат?

news = News.objects.filter(date__lt = datetime.date(year, month, 1))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...