django - 子类化 Django ModelForms

标签 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 中清除其他字段吗?

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

最佳答案

这是一个迟到的答案,但我想指出您可以将内部 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/

相关文章:

HTML 表单构建/Django request.POST 帮助

django - 布局 Angular/Django 应用程序的最佳实践

python - 尝试设置 Django,但在 cmd 中收到错误

django - 有没有办法在 Django 中进行不区分大小写的 IN 查询?

python - Django 1.9 + sorl-thumbnail + memcached

django - Django 中的上下文是什么?

python - 我怎样才能让不同的客户端每次加载唯一的行(不重叠),而不进行用户登录 session ?

python - 使用 Django 设置参数化测试

python - 如何在 Django 模板中多次迭代同一个字典?

django - docker中的共享镜像卷挂载错误