Vous pouvez ajouter des des fonctions de base de données à Django , pour cela, vous pouvez ajouter une fonction pour la instruction INTERVAL dans postgres
class IntervalSeconds(Func):
function = 'INTERVAL'
template = "(%(expressions)s * %(function)s '1 seconds')"
Vous pouvez ensuite utiliser cette fonction dans vos requêtes pour ajouter des secondes à une date/heure
YourModel.objects.annotate(
attr=ExpressionWrapper(
F("article__created_on") + IntervalSeconds(F("article__websitet__avg_time_in_seconds_to_reach_ep")),
output_field=models.DateTimeField()
),
)
La sortie de IntervalSeconds
la fonction est un intervalle Postgres
d'une seconde multiplié par le champ qui lui est transmis. Cela peut être ajouté et soustrait d'un horodatage. Vous pouvez créer un Interval
générique fonction qui ne prend pas que quelques secondes, c'est un peu plus complexe
Le ExpressionWrapper
est nécessaire pour convertir le résultat en un objet datetime