Mam pytanie w Django o tym, jak porównać daty, aby rozwiązać niektóre rozwiązania. Na przykład mam pole dat w moim models.py jak poniżej.Używanie datetime do porównania z datami w Django
class Invoice(models.Model):
payment_date = models.DateTimeField()
Co chcę być w stanie zrobić to zapytać, czy jest sposób, aby porównać DateTime.Now z DateTimeField. Na przykład, jeśli mam listę dat płatności i chciałem teraz porównać z datetime. Zwracają datę zapłaty, która spóźnia się z ich płatnościami. W przeciwnym razie wartość wynosi zero.
Oto moje widoki, aby pokazać, co się dzieje. Próbowałem do tej pory, ale otrzymuję wartość 0 dla daty płatności, która jest późniejsza niż data płatności.
Tutaj edytuję moje najnowsze widoki. Zabawne jest to, że wydaje mi się, że uzyskuję owing = invoice_gross dla wszystkich wyników - w przeciwieństwie do wcześniejszych, kiedy otrzymywałem wszystkie 0. Więc nadal nie działa poprawnie.
@login_required
def homepage(request):
invoices_list = Invoice.objects.all()
invoice_name = invoices_list[0].client_contract_number.client_number.name
invoice_gross = invoices_list[0].invoice_gross
payment_date = invoices_list[0].payment_date
if payment_date <= datetime.now():
owing = invoice_gross
if payment_date > datetime.now():
owing = 0
return render_to_response(('index.html', locals()), {'invoices_list': invoices_list ,'invoice_name':invoice_name, 'invoice_gross':invoice_gross,'payment_date':payment_date,'owing':owing}, context_instance=RequestContext(request))
Och i mój stół w zasadzie robi coś takiego.
ID Owing
1 100 (All the same value)
2 100
3 100
. .
. .
. .
jeśli zmienię „jeśli datetime.now> = payment_date: "Otrzymuję ten błąd nie mogę porównać datetime.date do builtin_function_or_method – Shehzad009
' datetime.now' jest funkcją, wywołaj ją przez 'datetime.now()' – crodjer
Powrót na moim komputerze. Nadal nie działa poprawnie. Spójrz na najnowszy kod. – Shehzad009