也许这是一个奇怪的答案,所以我会解释为什么我要这样做。
我有一个产品模型。我必须给他们每个人分配一些库存。
所以我在产品模型上有一个函数,它可以计算很多必要的东西,比如库存,并返回一个QuerySet。
由于我的数据库模型有点“复杂”,因此在这种情况下我无法使用注释。因此,我决定手动执行此数据库查询,然后为查询上的每个产品分配手动设置库存属性。像这样的东西:
for product in queryset_products:
product.stock = some_stock_calc...
当我想使用这个queryset_product过滤器时,问题就出现了。 执行如下操作后:
queryset_products = queryset_products.filter(...)
库存属性丢失
有什么解决办法吗?
最佳答案
由于您无法使用 annotate()
,因此如果您可以在 Product
表中添加一个单独的列来存储 stock
,那么您可以随时进行过滤
查询。
也许有一个 celery
任务来对每个 Product
进行所有计算并保存到新列。
否则,如果没有 annotate
,查询集中就无法拥有 stock
属性。
关于python - 如何在过滤后保留分配给查询集对象的属性?备择方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55681253/