首页 > 解决方案 > Django:即使存在也未加载多对多关系

问题描述

我们为电子商务网站运行 Django 服务器,在其中进行了数千次查询,最后我们收到许多错误,例如:“FieldError: Cannot resolve keyword 'stockrecords' into field. Choices are: ...” 我知道这个每当我们尝试通过模型中不存在但确实存在的字段来连接表时,都会引发错误。

查询大部分时间都有效,但仅在某些情况下无效。

模型 StockRecord 的定义是:

class StockRecord(models.Model):
    product = models.ForeignKey(
        'catalogue.Product',
        on_delete=models.CASCADE,
        related_name="stockrecords",
        verbose_name=_("Product"))
    num_in_stock = models.PositiveIntegerField(
        _("Number in stock"), blank=True, null=True)

并且产品的定义不包括对库存记录的任何引用。

调用时会产生错误:

class ProductQuerySet(models.query.QuerySet):

    def with_stock(self):
        return self.filter(stockrecords__num_in_stock__gt=0)

喜欢:

p = Product.objects.get(id=1)
# Here the exception raises
products_filtered = p.with_stock().all()

谢谢!!

标签: pythondjangoormdjango-oscar

解决方案


推荐阅读