gpt4 book ai didi

django - 按计算字段排序查询集

转载 作者:行者123 更新时间:2023-12-03 02:24:26 25 4
gpt4 key购买 nike

我想要一个包含计算字段的模型,我可以对其应用排序。例如,假设我有以下模型:

class Foo(models.Model):
A = models.IntegerField(..)
B = models.IntegerField(..)
C = models.ForeignKey(..)

我想要一个通过以下公式计算的 D 和 E 字段:

  1. D = A - B
  2. E = A - X(其中X是模型C的相关记录的字段)

如果我不需要应用排序,那么实现这一点将是微不足道的;我只是将属性添加到模型类中。但是,我需要按这些字段排序。

一个解决方案是将所有记录提取到内存中并在那里进行排序,我认为这是最后的手段(它会破坏有关分页的事情)。

有办法实现我想要的吗?任何指导表示赞赏。

编辑:非规范化是不行的。字段X的值变化非常频繁,很多Foo记录与模型C的一条记录相关。X的更新将需要E的数千次更新。

最佳答案

如果您不介意一些逻辑重复,那么以下内容将起作用:

Foo.objects.extra(select={'d_field': 'A - B'}).extra(order_by=['d_field'])

关于django - 按计算字段排序查询集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1652577/

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