gpt4 book ai didi

django - 带有额外方法的查询集返回空,count() 另有说明

转载 作者:行者123 更新时间:2023-12-03 10:30:35 26 4
gpt4 key购买 nike

这是我写的相关经理:

class PortfolioItemManager(models.Manager):

use_for_related_fields = True

def extended(self):

return self.extra(select = {'current_price':'current_price', 'current_value':'current_price*quantity', 'gain':'current_price*quantity - cost'},
tables = ['pm_core_contract', ],
where = ['pm_core_contract.id = pm_core_portfolioitem.contract_id', ]
)

以下是让我难受的结果:
In [10]: PortfolioItem.objects.extended()
Out[10]: []
In [11]: PortfolioItem.objects.extended().count()
Out[11]: 402

count() 的结果是正确的。我在这里缺少什么?

编辑:生成的SQL是正确的,可以直接对db执行。

编辑2:问题源于最后 2 个选择参数,它们具有算术运算功能。

最佳答案

我想我刚刚找到了问题所在。感谢 Alex,他的评论引发了这个想法:

PortfolioItem 模型具有以下属性 current_valuecurrent_gain ,我一直试图用计算的 SQL 字段替换它。我的错误是在不删除属性的情况下将 extra() 方法的选择字段之一命名为“current_value”,因为这导致模型具有两个同名的字段。当我消除这种重叠时,一切都变得OK了。吸取了教训。

关于django - 带有额外方法的查询集返回空,count() 另有说明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1654700/

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