Python 从内联表单保存自定义数据(django admin)
我使用的是两个级别的Python 从内联表单保存自定义数据(django admin),python,django,django-forms,inline-formset,Python,Django,Django Forms,Inline Formset,我使用的是两个级别的django嵌套内联包 class OrdersAdmin(NestedModelAdmin): inlines = [PointsInLine,] form = OrdersModelForm class PointsInLine(NestedStackedInline): model = Points fk_name = 'order_id' inlines = [AddressesInLine] class Addresses
django嵌套内联包
class OrdersAdmin(NestedModelAdmin):
inlines = [PointsInLine,]
form = OrdersModelForm
class PointsInLine(NestedStackedInline):
model = Points
fk_name = 'order_id'
inlines = [AddressesInLine]
class AddressesInLine(NestedStackedInline):
model = Addresses
fk_name = 'point'
form = AddressModelForm
如您所见,我还为最后一级(AddressesInLine
)创建了一个自定义表单,如下所示:
class AddressModelForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(forms.ModelForm, self).__init__(*args, **kwargs)
self.fields['address'].widget = BoxSearchWidget()
class Meta:
fields = '__all__'
model = Addresses
同样,我用一个自定义小部件覆盖字段“address”(由于简单,我将不包括它)
最后,问题是:当我保存时,这个自定义字段地址不会保存,甚至当我试图覆盖表单的save()方法时,我在任何字典中都看不到该值。那么,我在创建自定义表单时是否遗漏了一些内容?
提前谢谢 问题是您正在调用超级(ModelForm,self)。\uuuuu init\uuuu
方法,这是表单
类的方法。因此,类被构造为一个普通的表单
,而不是模型表单
您应该调用super(AddressModelForm,self)。\uuuu init\uuuuu
。请记住:super
的第一个参数是需要获取父类型方法的子类型。您可以找到有关super
的更多信息