繁体   English   中英

将日期时间与 Django 生日对象进行比较

[英]Compare datetime with Django birthday objects

我有一个关于我的脚本的问题。 我想知道所有从我的数据库中获得超过 16 年的人。 我想在用户触发功能时检查这一点。

我有这个功能:

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 ,我打印元素,否则什么都没有。

我有两个问题:

  • 如何仅从birthday提取year
  • 那么比较的方法是inttuple到现在为止。 如果我只能从生日中提取年份,它应该可以正常工作吗?

谢谢

编辑 :

例如,我想获取所有自今年年初以来已满 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)

如果您需要过滤某个特定年份的记录,您可以使用日期字段的__year方法:

age_16 = (today - relativedelta(years=16))
result = Identity.objects.filter(birthday__year=age_16.year).order_by‌​('last‌​name')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM