Python 如何使用多重继承来编写Django表单?
我有很多表单包含相同的非模型字段。在本例中,让我们调用字段Python 如何使用多重继承来编写Django表单?,python,django,multiple-inheritance,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
。这不是任何模型的字段,只是我希望在每个表单中显示的字段。下面是我当前代码的一个工作示例:
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类应该覆盖表单。表单:
class AuthorMixin(forms.Form):
author = forms.CharField()
class BookForm(AuthorMixin, forms.Form):
class Meta:
model = models.Book
fields = ["author"]
虽然这会起作用,但我正在尝试使用多重继承来编写新的表单(因此是新的)。原因是我已经为表单定义了自己的基类,我希望仅对所选表单使用
AuthorMixin
。您没有指定要从自己的基类重写,事实上,您的示例是在重写django表单类的同时使用mixin。我已经更新了答案以反映您的需求。非常感谢。这正是我需要的!