对Django ModelForms进行子类化

Ale*_*and 17 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')
Run Code Online (Sandbox Code Playgroud)

那甚至会起作用吗?或者它只是从SocialForm中删除BasicForm中的其他字段?

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

Gho*_*r21 45

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

class SocialForm(BasicForm):
    class Meta(BasicForm.Meta):
        fields = BasicForm.Meta.fields + ('facebook', 'twitter')
Run Code Online (Sandbox Code Playgroud)

这样您就不必重复model = Business定义,Meta您可以添加的任何其他属性BasicForm将自动继承SocialForm.

作为参考,这里是关于这种方法的Django文档.