Запросить базу данных в django с использованием модельной процедуры - PullRequest
0 голосов
/ 19 июня 2020

Я создал модель с процедурой, которая вычитает две даты из полей в модели, возвращая разницу дней между ними, например:

class Example:
    earlierDate=models.DateField()
    laterDate=models.DateField()

    def day_diff(self):
        return (laterDate-earlierDate).days

Можно ли запросить базу данных, включая процедуру day_diff?

in_views_query = Example.objects.filter (day_diff__gte = 30)

Когда я использую этот тип запроса, он показывает мне, что нет поля 'day_diff'

С уважением

1 Ответ

3 голосов
/ 19 июня 2020

Вы можете использовать ExpressionWrapper, чтобы это произошло

from django.db.models import DateField, ExpressionWrapper, F

Example.objects.annotate(day_diff=ExpressionWrapper(
                F('laterDate') - F('earlierDate'), output_field=models.DateField()
))

Django также есть аналогичный пример в документации. проверьте это: https://docs.djangoproject.com/en/3.0/ref/models/expressions/#using -f-with-annotations

...