python - 如何使用多重继承来编写 Django 表单?

标签 python django multiple-inheritance

我有很多包含相同非模型字段的表单。在本示例中,我们将该字段称为 author。这不是任何模型的字段,只是我想在每个表单中出现的字段。这是我当前代码的一个工作示例:

from django import forms
from . import models

class BlogForm(forms.Form):
    author = forms.CharField()
    class Meta:
        model = models.Blog
        fields = ["author"]

class BookForm(forms.Form):
    author = forms.CharField()
    class Meta:
        model = models.Book
        fields = ["author"]

所以,很自然地,我认为我可以使用 Python 继承并创建一个包含此字段的可重用“mixin”类。然而,这似乎是不可能的。由于某种原因,我无法执行以下操作:

from django import forms
from . import models

class AuthorMixin:
    author = forms.CharField()

class BookForm(AuthorMixin, forms.Form):
    class Meta:
        model = models.Book
        fields = ["author"]

这是我收到的错误:

django.core.exceptions.FieldError: Unknown field(s) (author) specified for Book

如何使用多重继承来编写 Django 表单?

最佳答案

您的 AuthorMixin 类应覆盖 forms.Forms:

class AuthorMixin(forms.Form):
    author = forms.CharField()

class BookForm(AuthorMixin, forms.Form):
    class Meta:
        model = models.Book
        fields = ["author"]

关于python - 如何使用多重继承来编写 Django 表单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66101543/

相关文章:

python - 如何使用 Python 发送没有 'Host Header' 的请求?

python - Django ViewSet ModuleNotFoundError : No module named 'project name'

c++ - 虚拟和非虚拟继承的混合

python - 从父类继承的孙子 - Python

python - 在不可迭代函数上执行进度条 - Python

python - 如何加快pandas中的条件groupby sum

python - 如何使用 Python 从 PDF 中删除文本

Django Activity Feed(Feedly 集成?)

python - 为什么在 Django 中重写 Model.save() 函数不起作用?

c++ - 虚拟继承 : Base Ctor not calling in Most Derived Class?