Sie können Datenbankfunktionen zu Django hinzufügen , dafür können Sie eine Funktion für die INTERVAL-Anweisung hinzufügen in postgres
class IntervalSeconds(Func):
function = 'INTERVAL'
template = "(%(expressions)s * %(function)s '1 seconds')"
Sie können diese Funktion dann in Ihren Abfragen verwenden, um Sekunden zu einer Datumszeit hinzuzufügen
YourModel.objects.annotate(
attr=ExpressionWrapper(
F("article__created_on") + IntervalSeconds(F("article__websitet__avg_time_in_seconds_to_reach_ep")),
output_field=models.DateTimeField()
),
)
Die Ausgabe von IntervalSeconds
Funktion ist ein Postgres-Intervall
von 1 Sekunde multipliziert mit dem übergebenen Feld. Dieser kann zu einem Zeitstempel addiert und subtrahiert werden. Sie könnten ein generisches Interval
erstellen Funktion, die nicht nur Sekunden dauert, sondern etwas komplexer ist
Der ExpressionWrapper
wird benötigt, um das Ergebnis in ein datetime-Objekt umzuwandeln