19

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

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

4

1 回答 1

46

这是一个迟到的答案,但我想指出您可以Meta像这样子类化内部类:

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

这样您就不必重复model = Business定义,并且您可能添加的任何其他Meta属性都BasicForm将自动由SocialForm.

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

于 2012-09-02T03:22:41.390 回答