Форум сайта python.su
Привет.
Есть форма:
class DateForm(forms.Form): date = forms.DateField(widget=SelectDateWidget(years=range(2013, 2000, -1)))
class DMY(models.Model): name = models.CharField() start_date = models.DateField() end_date = models.DateField(blank=True, null=True)
form = DateForm(request.POST or None) if form.is_valid(): form_date = form.cleaned_data.get('date') # Теперь вопрос! # Мне нужно получить все записи из модели DMY где день (form_date.day) и месяц (form_date.month) находятся в диапазоне между start_date и end_date # Год значения не имеет! # Как правильно составить запрос?
Отредактировано MikaMika (Апрель 19, 2013 12:02:04)
Офлайн
qs = DMY.objects.filter(start_date__lt=_my_date, end_date__gt=_my_date)
Отредактировано inoks (Апрель 19, 2013 13:59:14)
Офлайн
Это понятно.
Но такой запрос учитывает - год!
А мне нужен только диапазон среди дней и месяцев.
Офлайн
Используйте условия на дату и месяц в запросе
https://docs.djangoproject.com/en/1.0/ref/models/querysets/#year
Офлайн
Что-то сомневаюсь, что в Django-ORM одним запросом это можно сделать.
Еще пример посложнее.
Дано: 25.04.2013 01.06.2013
Ввод: 23.05, 02.06
Офлайн
inoksДа, это здорово!
Используйте условия на дату и месяц в запросеhttps://docs.djangoproject.com/en/1.0/ref/models/querysets/#year
q = DMY.objects.get(date__start_date__year__gt=2013)
Отредактировано MikaMika (Апрель 20, 2013 05:26:50)
Офлайн
Вариант 1: - создавать набор _my_date в диапазоне возможных лет и проходить объединенным запросом с условием наподобие filter(start_date__lt=_my_date, end_date__gt=_my_date).
Вариант 2: - сохранять в модели значения месяца и даты в отдельные поля и фильтровать по ним.
Офлайн