python - 如何在过滤后保留分配给查询集对象的属性?备择方案?

标签 python django python-3.x django-models django-queryset

也许这是一个奇怪的答案,所以我会解释为什么我要这样做。

我有一个产品模型。我必须给他们每个人分配一些库存

所以我在产品模型上有一个函数,它可以计算很多必要的东西,比如库存,并返回一个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/

相关文章:

Python:打印嵌套类

python - Gensim `most_similar` 中的弃用警告?

python - 将可变大小的字节数组转换为整数/长整数

python - 新的 pypi org 代理不适用于 sonatype nexus

python - Django:打印 View 的 url 而无需对 url 进行硬编码

python - 多服务器生产环境中的django-celery

python-3.x - Python/Pandas 2 系列的元素明智联合,每个元素中包含集合

python - 如何为绝对初学者制作适用于 Windows 的 Python 扩展

python - 将字节字符串转换为 matplotlib 可读时间

django - 如何调试 Django PayPal IPN?