如何使用多重继承来组合 Django 表单?
How can I use multiple inheritance to compose Django forms?
我有很多包含相同非模型字段的表单。为了这个示例,我们将字段称为 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”class。然而,这似乎是不可能的。出于某种原因,我无法使用以下命令:
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 class 应该覆盖 forms.Forms:
class AuthorMixin(forms.Form):
author = forms.CharField()
class BookForm(AuthorMixin, forms.Form):
class Meta:
model = models.Book
fields = ["author"]
我有很多包含相同非模型字段的表单。为了这个示例,我们将字段称为 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”class。然而,这似乎是不可能的。出于某种原因,我无法使用以下命令:
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 class 应该覆盖 forms.Forms:
class AuthorMixin(forms.Form):
author = forms.CharField()
class BookForm(AuthorMixin, forms.Form):
class Meta:
model = models.Book
fields = ["author"]