对Django ModelForms进行子类化

时间:2012-06-07 19:23:36

标签: django

我想扩展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中的其他字段?

这样做的正确方法是什么?

1 个答案:

答案 0 :(得分:42)

这是一个迟到的答案,但我想要注意你可以像这样继承内部Meta类:

class SocialForm(BasicForm):
    class Meta(BasicForm.Meta):
        fields = BasicForm.Meta.fields + ('facebook', 'twitter')

这样您就不必重复model = Business定义,而Meta可能会自动继承BasicForm的任何其他SocialForm属性。

作为参考,这里采用Django documentation方法。