【发布时间】:2019-09-04 23:13:18
【问题描述】:
也许这是一个奇怪的答案,所以我会解释我为什么要这样做。
我有一个产品模型。我必须为他们每个人分配一些库存。
所以我在 Products 模型上有一个函数,它可以计算很多必要的东西,例如库存并返回一个 QuerySet。
由于我的数据库模型有点“复杂”,在这种情况下我不能使用注释。所以我决定手动执行这个数据库查询,然后,在查询中为每个产品分配手动设置库存属性。比如:
for product in queryset_products:
product.stock = some_stock_calc...
当我想使用 filters 这个 queryset_product 时,问题就来了。 执行以下操作后:
queryset_products = queryset_products.filter(...)
股票属性丢失
有什么解决办法吗?
【问题讨论】:
-
AFAIK,唯一的解决方案是Django QS
annotatefunction -
我不认为你可以这样做。因为querysets are lazy。对象仅在访问时创建。也许
@property可以解决你的问题。
标签: python django python-3.x django-models django-queryset