class MyCustomInline(admin.TabularInline):
min_num = 1
extra = 0
fields = ['matcher', 'param0', 'param1']
model = MyModel
form = MyCustomInlineForm
def get_formset(self, request, obj=None, **kwargs):
extra_fields = {
'param0': forms.CharField(label='First Param', required=False),
'param1': forms.CharField(label='Second Param', required=False)
}
kwargs['form'] = type('MyCustomInline', (MyCustomInlineForm,), extra_fields)
return super(MyCustomInline, self).get_formset(request, obj, **kwargs)
这就是我定义内联表单的基本方式,以便它有两个额外的字段matcher
是相关表中的标准字段,内联表单会自动处理它。我通过重写MyCustomInlineForm
中的save()
,将额外的param值保存在不同的存储器中。在
但是如果我编辑了一个现有的记录匹配器值,那么我显然还想用相应的值预加载param0和param1。我在哪能联系上呢?在
我自己设法做到的。我还设法简化了自定义额外字段的定义方式,而不重写
get_formset
方法:如果需要-自定义参数的验证可以通过重写
forms.ModelForm
类的is_valid()
方法并通过self.add_error()
添加错误来完成。我希望它能帮助别人。在相关问题 更多 >
编程相关推荐