Another elegant way is to create a DataBase function.
, , . - , .
from django.db import models
class SomeModel(models.Model):
date_start = models.DateTimeField()
duration = models.FloatField()
DataBase:
from django.db.models.expressions import Func
from django.db.models import DateTimeField
class Interval(Func):
function = 'INTERVAL'
template = "(%(expressions)s * %(function)s '1 %(phylum)s')"
def __init__(self, expression, phylum, **extra):
output_field = extra.pop('output_field', DateTimeField())
super(Interval, self).__init__(expression, output_field=output_field, phylum=phylum, **extra)
. Interval F ('field_name') Value() Python. : "", "", "", "".
objs = (SomeModel.objects.annotate(date_end=F('date_start') + Interval(F('duration'), 'hour')).
filter(date_end__lte=datetime.datetime.now(pytz.utc)))
: Django == 1.8.15, Postgres: 9.4.5
Postgres, : 'as_postgresql', 'as_oracle'