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

正确的做法是什么?

最佳答案

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

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


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

供参考,这里是此方法的Django documentation

关于django - 子类化Django ModelForms,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10938521/

10-10 14:39