Как отсортировать QuerySet с полем свойства Django - PullRequest
3 голосов
/ 07 апреля 2019

У меня есть модель как

class FooModel(models.Model):
    field_1 = models.IntegerField()
    field_2 = models.IntegerField()

    @property
    def field_sum(self):
        return self.field_1 + self.field_2

Как отсортировать набор запросов с полем field_sum?

FooModel.objects.all().order_by('field_sum') дает мне ошибку. Заранее спасибо

1 Ответ

12 голосов
/ 07 апреля 2019

Используйте F() выражение вместе с annotate(), как показано ниже,

from django.db.models.expressions import F

FooModel.objects.<b>annotate(field_sum_new=F('field_1') + F('field_2')).order_by('field_sum_new')</b>
...