假装在Django管理员中有4个表单内联,每个表单都有一对字段选项,“Attributes”和“Value Option”。我们有第一对,用一个值初始化字段1,例如颜色和其他字段,你必须有一个查询集的选择。
请检查图片
如您所见,我需要使用默认值过滤每一对,如果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,其值分别为白色,蓝色和黑色。 我两天前试图这样做,我没有完成任何事情,如果解决方案是在表格上或在管理员的任何功能
答案 0 :(得分: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