Форум сайта python.su
Привет всем. Сразу к делу.
Берём самую простую моедель:
class Human(models.Model):
birth_date = models.DateField()
Отредактировано (Апрель 27, 2010 13:41:20)
Офлайн
from django.db.models import Q
min_age = 20
max_age = 30
min_age_ago = datetime.now - min_age
max_age_ago = datetime.now - max_age
humans = Human.objects.filter(Q(birthday__lte=min_age_ego) & Q(birthday__gte=max_age_ego))
Отредактировано (Апрель 27, 2010 01:21:12)
Офлайн
FerromanНу в теории - всё верно. Но я проверял.
min_age_ago = datetime.now - min_age max_age_ago = datetime.now - max_age
tezroТо есть если вычтем 30 лет от текущей даты, например получим 27 апреля 1980-го года, то в выборку не попадут те, у кому 26-го апреля исполнилось 30.
не учитываыет людей, которым уже исполнилось 30
Офлайн
Собсно, как оказалось, всё почти так.
today = date.today()
date_start = date(today.year - age_max - 1, today.month, today.day) + timedelta(days=1)
date_end = date(today.year - age_min, today.month, today.day)
humans_list = Human.objects.filter(
birth_date__gt = date_start,
birth_date__lte = date_end,
)
Отредактировано (Апрель 27, 2010 18:08:06)
Офлайн