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