2015-05-26 5 views
3

Предположим, что у администратора Django четыре встроенных строки, каждый из которых имеет пару вариантов полей, «Атрибуты» и «Параметр значения». У нас есть первая пара, которая инициализирует поле со значением, например цветом и другим полем, у вас должен быть выбор для выбора.Как передать набор запросов для каждого отдельного поля Admin Inlines

Проверить изображения, пожалуйста enter image description here

Как вы можете видеть, что нужно фильтровать каждую пару с их значениями по умолчанию, если цвет должен показывать только белый, черный и синий.

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' .. }, { .. }] 

Что я делаю, это инициализировать каждый атрибут со значением, например, цвет и принял QuerySet к value_option с их соответствующими значениями, белого, синего и черного. Я попытался сделать это два дня назад, и я ничего не сделал, если решение находится на формах или в любой функции администратора

ответ

1
class ParametersInlineForm(forms.forms.ModelForm): 
    def __init__(self, *args, **kwargs): 
     super(ParametersInlineForm, self).__init__(*args, **kwargs) 
     try: 
      self.fields['value'].queryset = models.Value.objects.filter(parameter=self.instance.parameter) 
     except: 
      self.fields['value'].queryset = models.Value.objects.none() 


class ParametersInline(admin.StackedInline): 
    model = models.Product.parameters.through 
    form = ParametersInlineForm 
Смежные вопросы