我想扩展ModelForms,主要目的是向表单添加字段。我认为通过一个例子更容易看到:
# Basic listing
class BasicForm(ModelForm):
class Meta:
model = Business
fields = ('category', 'city', 'name', 'address',
'slogan', 'phone', 'website', 'email')
class SocialForm(BasicForm):
class Meta:
model = Business
fields = ('facebook','twitter')
这甚至会起作用吗?或者它只是从SocialForm中删除BasicForm中的其他字段?
这样做的正确方法是什么?
答案 0 :(得分:42)
这是一个迟到的答案,但我想要注意你可以像这样继承内部Meta
类:
class SocialForm(BasicForm):
class Meta(BasicForm.Meta):
fields = BasicForm.Meta.fields + ('facebook', 'twitter')
这样您就不必重复model = Business
定义,而Meta
可能会自动继承BasicForm
的任何其他SocialForm
属性。
作为参考,这里采用Django documentation方法。