Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Django
  • » Возможно ли через запрос к базе выбрать данные за определенный период [RSS Feed]

#1 Май 18, 2011 16:21:56

lov4iy
От:
Зарегистрирован: 2011-05-18
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Возможно ли через запрос к базе выбрать данные за определенный период

Цель — из базы выбрать сотрудников у которых день рождение в течении ближайших двух недель.
Возможно ли это сделать через запрос к базе?

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

Модель:

class Employee(models.Model):
last_name = models.CharField(max_length=30)
birthday = models.DateField(blank=True, null=True)
Представление:
	today = date.today().timetuple().tm_yday
dist = today + 14
dataset = Employee.objects.all()
birthdays = []
for i in dataset:
if i.birthday and i.birthday.timetuple().tm_yday <= dist and i.birthday.timetuple().tm_yday >= today:
birthdays.append({
'last_name': i.last_name,
'birthday': i.birthday})



Отредактировано (Май 18, 2011 17:57:12)

Офлайн

#2 Май 18, 2011 18:20:30

fth
От:
Зарегистрирован: 2010-07-26
Сообщения: 105
Репутация: +  0  -
Профиль   Отправить e-mail  

Возможно ли через запрос к базе выбрать данные за определенный период

Код не проверял, но надеюсь общий смысл понятен.

end_date = date.today()
start_date = today - timedelta(14)
empl_birth_days = Employee.objects.filter(
(Q(birthday__month=start_date.month)&Q(birthday__day__gte=start_date.day))|Q(birthday__month__gt=2start_date.month)
).filter(
(Q(birthday__month=end_date.month)&Q(birthday__day__lte=end_date.day))|Q(birthday__month__lt=end_date.month)
).all()
На всякий случай доки по Q:
http://docs.djangoproject.com/en/dev/topics/db/queries/#complex-lookups-with-q-objects



Офлайн

#3 Май 18, 2011 18:30:32

lov4iy
От:
Зарегистрирован: 2011-05-18
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Возможно ли через запрос к базе выбрать данные за определенный период

Спасибо огромное :)
Интуиция не подвела ;) Только неделю как начал Django изучать, всю документацию еще не осилил…



Офлайн

#4 Май 18, 2011 20:33:36

lov4iy
От:
Зарегистрирован: 2011-05-18
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Возможно ли через запрос к базе выбрать данные за определенный период

А как реализовать вот такую конструкцию в запросе правильно? Что-то никак найти не могу :(

birthday__day__gte=start_date.day

Join on field 'birthday' not permitted. Did you misspell 'day' for the lookup type?



Офлайн

  • Начало
  • » Django
  • » Возможно ли через запрос к базе выбрать данные за определенный период[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version