model.py:
class Med(Model):
name = CharField(max_length=2)
valid_from = DateTimeField()
validity = IntegerField()
Я хочу получить набор запросов, который имеет (validity + valid_from) больше, чем текущее время.
Сначала я пытался аннотировать одно поле expires=F('valid_from')+timedelta(minute=F('validity'))
затем фильтр на основе этого, но я не смог аннотировать поле:
Med.objects.annotate(
expires=ExpressionWrapper(
F('valid_from')+timedelta(minute=F('validity')),
output_field=DateTimeField()))
Я также попытался timedelta(minute=1)*F('validity')
, но это также не удалось.
Наконец я попытался извлечь из raw () стак много манипуляций, один из примеров:
Med.objects.raw("select * from myapp_med m where %s>%s",
['expiry_date+datetime.timedelta(minute=validity',datetime.now()])
Это дает мой набор запросов, но это неправильно.
Примечание: Пожалуйста, дайте мне знать, если я правильно задал вопрос.