gpt4 book ai didi

django - 通过两个(或多个)字段的总和对 Django 查询集进行排序

转载 作者:行者123 更新时间:2023-12-04 23:14:03 26 4
gpt4 key购买 nike

我发现了一些与我的问题相似的问题,但其中大多数都过时了,或者太(或太少)冗长而无济于事。

我有一个这样的模型:

class Breakfast(models.Model):
count_eggs = models.IntegerField()
count_bacon = models.IntegerField()
had_toast = models.BooleanField()

现在,在构建 RESTful API 时,我需要能够按 count_eggs + count_bacon 的总数对早餐对象进行排序。无需将其永久存储在模型上。

许多当前和流行的问题都暗示了这样的事情:
Breakfast.objects.extra(
select={'total_food':'count_eggs + count_bacon'},
order_by=('total_food',)
)

这似乎对很多人都有效,但是 Django docs appear to dissuade this solution .因此,在 1.10+ 世界中,对 Django 中的两个(或多个)字段的总和进行此类过滤的最佳/正确方法是什么?

最佳答案

你应该使用注释,我有一个我的例子并适应你的情况,试试这个:

from django.db.models import F, Sum

Breakfast.objects.all().\
annotate(total_food=Sum(
F('count_eggs ') + F('count_bacon'))
).\
order_by('total_food')

关于django - 通过两个(或多个)字段的总和对 Django 查询集进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47757857/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com