2016-08-29 5 views
-1

Angenommen ich ein Modell haben, die vier Attribute:Wie erstellt man eine Abfrage, die die Differenz zweier Zeitfeldobjekte/Attribute in Django berechnet?

  • Name,
  • Zeit in,
  • Auszeit,
  • Datum.

Zeit in und Auszeit sind Timefield Objekte. Jetzt möchte ich eine Django-Abfrage schreiben, die mir sagt, wer für die meiste Zeit in einem gegebenen Bereich im Büro verfügbar war.

Ich bin mir nicht sicher, wie ich den Zeitunterschied (time out - time in) im Fluge berechnen kann. Muss ich ein anderes Attribut wie die Zeitdauer hinzufügen? Ich hatte gehofft, das zu vermeiden.

+0

Ihre Frage ist [dieser Frage verdächtig ähnlich] (http://stackoverflow.com/questions/39213525/django-query-how-do-i-find-the-maximum-time-duration-from-start- und Endzeit-f). Hausaufgabe? – solarissmoke

Antwort

1

Ich denke nicht, dass es möglich ist, Vanille Django ORM zu verwenden.

Zwei Lösungen kommen mir in den Sinn:

  1. die Ergebnisse im RAM holen und die Berechnung zu tun.

  2. Fügen Sie ein neues Feld hinzu, um sich um das duration in Ihrem Modell zu kümmern. Sie können zuerst eine Aktualisierungsabfrage durchführen, um die Dauer für alle Zeilen in Ihrer Datenbank zu berechnen.

    Class.objects.update (Dauer = F ('time_out') - F ('time_in'))

Und dann können Sie order_by Dauer und den ersten Eintrag als maximale Dauer erhalten.

Verwandte Themen