当存在多个与join相关的字段时,我的django模型会连接错误的字段

时间:2018-09-20 04:16:52

标签: python django django-models

我的产品模型与类别模型有两种不同的关系:

  1. 一对一
  2. 通过ProductShadowCategory表一对多。

现在的情况是,当我尝试使用第二种关系进行获取时,我正在从第一种关系中获取结果。

例如,这就是我要打印的内容:

Category.objects.get(slug="root").shadow_products.all()

但它会转换为以下sql:

print(Category.objects.get(slug="root").shadow_products.all().query)

SELECT `product_management_product`.`id`, `product_management_product`.`slug`, `product_management_product`.`category_id`, `product_management_product`.`brand_id` FROM `product_management_product` WHERE `product_management_product`.`category_id` = 720

我的模型如下:

class Category(SlugableModel):
    #...
    shadow_products = models.ManyToManyField("product_management.Product", through="product_management.ProductShadowCategory")

class Product(SlugableModel):
    #...
    category = models.ForeignKey(Category,on_delete=models.CASCADE, related_name="products", validators=[leaf_category])

class ProductShadowCategory(MyModel):
    category = models.ForeignKey(Category,on_delete=models.CASCADE)
    product = models.ForeignKey(Product,on_delete=models.CASCADE)

    class Meta:
        unique_together = ('category', 'product')

0 个答案:

没有答案