Притворитесь, что в администраторе Django есть 4 встроенных формы, каждая с парой вариантов выбора полей: «Атрибуты» и «Параметры значения». У нас есть первая пара, которая инициализирует одно поле со значением, например, цвет и другое поле, у вас должен быть запрос, установленный для выбора.
Проверьте изображения
Как видите, мне нужно отфильтровать каждую пару с их значениями по умолчанию, если Color должен показывать только белый, черный и синий.
class ProductAttributeValueForm(forms.ModelForm):
attribute = forms.ModelChoiceField(label=_('Attribute'),
widget=forms.Select(attrs={'disabled': 'True'}),
queryset=ProductAttribute.objects.all(), required=False)
class ProductAttributeValueFormSet(BaseInlineFormSet):
def __init__(self, *args, **kwargs):
super(ProductAttributeValueFormSet, self).__init__(*args, **kwargs)
# This return initial [{'attribute' initial}, {..}, {..}]
self.initial = [{'attribute': a} for a in obj.category.attributes.all()]
# Now we need to make a queryset to each field of each form inline
self.queryset = [{'value_option' .. }, { .. }]
Что я делаю, так это инициализирую каждый атрибут значением, например, Color, и передаю набор запросов в value_option с соответствующими значениями, белым, синим и черным. Я пытался сделать это два дня назад, и я ничего не добился, если решение не находится в формах или в любой функции администратора.