我的Django模型在有多个相关字段连接时连接了错误的字段

2024-09-30 00:27:47 发布

您现在位置:Python中文网/ 问答频道 /正文

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

  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')

Tags: 模型id关系modelsproductmanagementclassproducts

热门问题