Puoi aggiungere funzioni di database a Django , per questo puoi aggiungere una funzione per l'istruzione INTERVAL in postgres
class IntervalSeconds(Func):
function = 'INTERVAL'
template = "(%(expressions)s * %(function)s '1 seconds')"
Puoi quindi utilizzare questa funzione nelle tue query per aggiungere secondi a un datetime
YourModel.objects.annotate(
attr=ExpressionWrapper(
F("article__created_on") + IntervalSeconds(F("article__websitet__avg_time_in_seconds_to_reach_ep")),
output_field=models.DateTimeField()
),
)
L'output di IntervalSeconds
la funzione è un intervallo Postgres
moltiplicato per il campo che gli è passato. Questo può essere aggiunto e sottratto da un timestamp. Potresti creare un Interval
generico funzione che non richiede solo pochi secondi, questo è un po' più complesso
Il ExpressionWrapper
è necessario per convertire il risultato in un oggetto datetime