У меня вопрос о моем скрипте. Я хочу знать всех людей, которые имеют более 16 лет из моей базы данных. Я хочу проверить это, когда пользователь запускает функцию.Сравнение datetime с объектами дня рождения Django
У меня есть эта функция:
def Recensement_array(request) :
date = datetime.now().year
print date # I get year from now
birthday = Identity.objects.values_list('birthday', flat=True) # Return list with all birthday values
for element in birthday :
if date - element < 117 :
print "ok < 117"
else :
print "ok > 117"
От print date
я получаю:
2017
От print birthday
я получаю:
<QuerySet [datetime.date(1991, 12, 23), datetime.date(1900, 9, 12), datetime.date(1900, 9, 12), datetime.date(1900, 9, 12), datetime.date(1900, 9, 12), datetime.date(1089, 9, 22), datetime.date(1900, 9, 12), datetime.date(1900, 9, 12), datetime.date(1089, 9, 22), datetime.date(1089, 9, 22), datetime.date(1089, 9, 22), datetime.date(1089, 9, 22), datetime.date(1990, 12, 12)]>
Так что моя цель состоит в вычитать дату с день рождения и сравнить, если date - birthday = 16 years
, я печатаю элемент, иначе ничего.
я получаю две проблемы:
- Как извлечь только
year
изbirthday
? - Тогда метод сравнения находится между
int
иtuple
до настоящего времени. Если бы я мог извлечь только год с рождения, он должен работать правильно?
Спасибо
EDIT:
Например, я хочу, чтобы все люди, которые имели 16 лет с момента начале этого года или получит 16 лет до первого года:
def Recensement_array(request) :
today = datetime.now()
age_16 = (today - relativedelta(years=16))
result = Identity.objects.filter(birthday__range=[age_16, today]).order_by('lastname')
paginator = Paginator(result, 3)
page = request.GET.get('page', 1)
try:
result = paginator.page(page)
except PageNotAnInteger:
result = paginator.page(1)
except EmptyPage:
result = paginator.page(paginator.num_pages)
context = {
"Identity":Identity,
"age_16":age_16,
"datetime" : datetime,
"result" : result,
"PageNotAnInteger":PageNotAnInteger,
}
return render(request, 'Recensement_resume.html', context)
Возможный дубликат [Как запросить из базы данных по возрасту в Django, когда день рождения хранится в виде полей year/month/day] (http://stackoverflow.com/questions/25474545/how-to-query- from-the-db-by-age-in-django-when-birthday-is-stored-as-year-month) – Sayse
@Sayse Это не решает мою проблему, или я не понимаю, между вашей ссылкой и моей проблемой – Deadpool
«Я хочу знать всех людей, которые имеют более 16 лет из моей базы данных». - Он делает именно то, что вы заявляете – Sayse