2017-02-14 2 views
0

Я пытаюсь получить объект только с номером дня, где день - это переменная, содержащая номер дня, например. 1, 2, 3, 4 ... 29, 30, 31. (Я использую python с веб-картой django). Поэтому у меня есть поле start_date, которое является DateField, и я хочу искать объекты с определенным днем ​​в start_date.Получить объект, основанный на дате начала, только с датой даты

Это то, что я пытаюсь сделать:

holiday_object = Holiday.objects.get(start_date.day=day) 

Я не могу сделать start_date.day = день ...

SyntaxError: keyword can't be an expression

Как мне это сделать?

+0

Вы используете django? – Wombatz

+0

Да, я добавлю, что выше –

+0

какая ошибка бросает? И что здесь день? –

ответ

0

Потому что я имел текущий месяц и текущий год, я отформатировал дату следующим образом, а затем был проведен поиск

format_date = "{0}-{1}-{2}".format(self.year, self.month, day) 
holiday_object = Holiday.objects.get(start_date=format_date) 

Это работало просто отлично!

+0

хороший один @ruth! –

0

попробовать этот способ ..

Post.objects.filter(published_date__lte=timezone.now()) 
1

start_date.day это выражение Python, который пытается для поиска атрибут day любой объект привязан к имени start_date. Как сообщает сообщение об ошибке, вы не можете использовать выражение как ключевое слово для вызова функции.

Правильный синтаксис здесь будет Holiday.objects.get(start_date__day=day) - но будьте осторожны, это будет возвращать все Holiday записи, в которых start_date день делает матч, независимо год и месяц. Заметьте, что это то, что вы хотите ...

+0

Спасибо за это. –