Ограничение выбора цвета в форме администратора Django на основе ранее выбранных цветов
У меня есть две модели, Product
и Color
, связанные через ManyToManyFields
. Я хочу ограничить варианты цветов, доступных при редактировании товара в админ-интерфейсе Django.
Модели:
class Color(models.Model):
coid = ShortUUIDField(length=10, max_length=100, prefix="col", alphabet="abcdefgh")
name = models.CharField(max_length=20)
code = ColorField(default='#FF0000')
product_varients = models.ManyToManyField('Product', related_name='color_variants', blank=True)
image = models.ImageField(upload_to=color_directory_path, default="product.jpg")
class Product(models.Model):
pid = ShortUUIDField(length=10, max_length=100, prefix="prd", alphabet="abcdef")
title = models.CharField(max_length=100, default="Apple")
color = models.ManyToManyField(Color, blank=True)
price = models.DecimalField(max_digits=10, decimal_places=2, default=1.99)
Гол:
При создании или редактировании товара я хочу ограничить цвета в поле color
только теми, которые были ранее выбраны в поле цвета того же товара. Другими словами, я хочу, чтобы в поле color
отображались только цвета, связанные с цветом товара, а не все цвета, имеющиеся в базе данных.
Что мне нужно:
- Я хочу, чтобы в поле
color
в форме администратораProduct
отображались только те цвета, которые связаны с цветом данного товара. - Если цвет не задан, я хочу, чтобы поле
color
было пустым или не показывало никаких вариантов.
Текущее поведение:
Когда я нажимаю на поле color
в форме администрирования продукта, оно перенаправляет меня на модель Color, а затем, если я нажимаю на поле product_varients
, оно снова открывает модель Product, создавая систему цепочек. Я хочу показывать только цвета, связанные с цветом продукта.