Есть три модели (таблицы): Product, Brand, BrandColors
Product - содержит информацию о продукте и связь с брендом (ForeignKey)
Brand - описание бренда
BrandColors - содержит цвета бренда, который тот использует в своих продуктах (на один бренд, несколько записей, описывающих его цвета) (ForeignKey)
Нужно, чтобы при редактировании продукта в админке, можно было выбрать несколько цветов из палитры бренда. Для этого решил добавить ManyToManyField продукту для связи с BrandColors, но в админке показываются все цвета, всех брендов. Как ограничить список только цветами того бренда, которой прописан в продукте?
models.py#Сокращенный вариант, неважные поля и параметры убраны
class Brand(models.Model):
name = models.CharField()
description = models.TextField()
class BrandColor(models.Model):
brand = models.ForeignKey(Brand)
name = models.CharField()
color = models.CharField()
class Product(models.Model):
brand = models.ForeignKey(Brand)
colors = models.ManyToManyField(BrandColor)
name = models.CharField()
Пробовал ограничить с помощью
limit_choices_to, но вышло только тогда, когда явно указал определенный id бренда (а он у продуктов может быть разный)
# модель Product
colors = models.ManyToManyField(BrandColor, limit_choices_to={'brand': 1})