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

时间:2017-02-14 10:36:55

标签: python django datetime

我对我的剧本有疑问。我想知道我的数据库中超过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,我打印元素,否则没有。

我遇到两个问题:

  • 如何仅从year中提取birthday
  • 然后,比较方法介于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)

1 个答案:

答案 0 :(得分:1)

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

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