Wie eine Differenz der Datums- und Uhrzeitangaben in Tagen angegeben wird

Ich habe einBooking Modell, das @ hstart undend datetime Felder. Ich möchte wissen, wie viele Tage eine Buchung umfasst. Ich kann dies in Python tun, aber ich benötige diesen Wert für weitere Anmerkungen.

Hier ist, was ich versucht habe:

In [1]: Booking.objects.annotate(days=F('end')-F('start'))[0].days
Out[1]: datetime.timedelta(16, 50400)

Es gibt ein paar Probleme hier:

Ich möchte eine Ganzzahl (oder einen anderen Zahlentyp, den ich in Berechnungen verwenden kann) von Tagen als Ausgabe, kein Zeitdelta. Das Setzen von output_field hat hier keine Bedeutung.Meine Beträge basieren auf dem Datumma. Subtraktionen wie diese, ohne die Zeit zu verlieren, können dazu führen, dass die gesamte Anzahl der Tage frei ist.

In Python würde ich tun(end.date() - start.date()).days + 1. Wie kann ich das in der Datenbank tun, vorzugsweise über den ORM (zB Datenbankfunktionen), aber einRawSQL würde ausreichen, um dies aus der Tür zu bekommen?

Antworten auf die Frage(6)

Ihre Antwort auf die Frage