[英]Compare datetime with Django birthday objects
I have a question about my script.我有一个关于我的脚本的问题。 I want to know all people who have more than 16 years from my Database.我想知道所有从我的数据库中获得超过 16 年的人。 I want to check this when user triggers the function.我想在用户触发功能时检查这一点。
I have this function :我有这个功能:
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"
From print date
I get :从print date
我得到:
2017
From print birthday
I get :从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)]>
So my goal is to substract date with birthday and compare if date - birthday = 16 years
, I print element, else nothing.所以我的目标是用生日减去日期并比较date - birthday = 16 years
,我打印元素,否则什么都没有。
I get two problems :我有两个问题:
year
from birthday
?如何仅从birthday
提取year
?int
and tuple
up to now.那么比较的方法是int
和tuple
到现在为止。 If I could extract only year from birthday, it should work right ?如果我只能从生日中提取年份,它应该可以正常工作吗?Thank you谢谢
EDIT :编辑 :
For example I want to get all people who had 16 years old since the begining of this year or will get 16 years old before the first year :例如,我想获取所有自今年年初以来已满 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)
If you need filter records with some specific year you can just use __year
method of date field:如果您需要过滤某个特定年份的记录,您可以使用日期字段的__year
方法:
age_16 = (today - relativedelta(years=16))
result = Identity.objects.filter(birthday__year=age_16.year).order_by('lastname')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.