Ограничение выбора цвета в форме администратора 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 отображались только цвета, связанные с цветом товара, а не все цвета, имеющиеся в базе данных.

Что мне нужно:

  1. Я хочу, чтобы в поле color в форме администратора Product отображались только те цвета, которые связаны с цветом данного товара.
  2. Если цвет не задан, я хочу, чтобы поле color было пустым или не показывало никаких вариантов.

Текущее поведение:

Когда я нажимаю на поле color в форме администрирования продукта, оно перенаправляет меня на модель Color, а затем, если я нажимаю на поле product_varients, оно снова открывает модель Product, создавая систему цепочек. Я хочу показывать только цвета, связанные с цветом продукта.

Вернуться на верх