首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么值查询集不匹配模型属性

为什么值查询集不匹配模型属性
EN

Stack Overflow用户
提问于 2015-01-16 03:02:26
回答 1查看 119关注 0票数 0

使用django 1.7、python 3.4和postgres 9.4。

当我直接查询模型的属性时,它会返回适当的值。当我使用.values()查询同一个模型时,它返回不正确的值。

例如:

代码语言:javascript
运行
复制
>>>bomitem = self.itemproduction.billOfMaterials()
>>>for x in bomitem:
>>>    x.ratio
>>>>50
>>>>20
>>>>bomitem.values('ratio')
>>>>[{'ratio': 5}, {'ratio': 2}]

自产生和项目产生是一个OneToOneField关系。

ItemProduction.billOfMaterials()重写Product.billOfMaterials()

代码语言:javascript
运行
复制
def billOfMaterials(self):
    bom = self.inventoryItem.product.billOfMaterials()
    for x in bom:
        x.ratio = x.ratio * self.qty
    return bom 

这基本上是拿一个产品的材料清单(配方清单),并数字预期的材料清单,以生产n个产品。此外,当我试图过滤的轰炸机项目,结果的查询集具有相同的不正确的值。

代码语言:javascript
运行
复制
>>>>bomitem.get(component=x)
>>><BOM: Product One: 5>

为什么会有这种古怪的行为?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-16 03:11:03

数据库中的值是用.values('ratio')看到的,如果您想要该值是x.ratio = x.ratio * self.qty,则必须将该模型实例保存到数据库中,然后用计算方法初始化它

一种更好的方法是使用一个不同的字段,一个用于ratio,另一个用于所需的计算值(并决定是否要将它们保存到DB或动态计算中,除非需要,通常最好不要存储任何计算的字段,这样数据库中的数据就不会不一致)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27976662

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档