Ограничение выборки в ManyToManyField в Django?

Есть три модели (таблицы): 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})
  • Вопрос задан
  • 1406 просмотров
Пригласить эксперта
Ответы на вопрос 1
@osipov_am
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы