Моя модель django объединяет неправильные поля, когда есть несколько связанных полей с объединением - PullRequest
0 голосов
/ 20 сентября 2018

Моя модель продукта имеет две различные связи с моделью категории:

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