簡體   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