我有两种表单NewItem(ModelForm)
和EditItem(ModelForm)
。我重写了clean()
NewItem(ModelForm)
方法来验证字段。我想在clean()
中重复使用相同的EditItem(ModelForm)
方法,如果使用尝试编辑和重新保存数据?没有复制和粘贴,是否有一种干净的方法来实现这一目标?
答案 0 :(得分:3)
是的,你可以创建一个名为FormCleanMixin()
的mixin类,它将包含两个表单之间通用的clean()
方法。然后以2种形式继承这个mixin类。
首先,创建mixin类,如:
from django.forms import ModelForm
class FormCleanMixin(ModelForm):
def clean(self):
...
# your common code for 'clean()' here
现在,以两种形式继承这个mixin类,如:
class NewItem(FormCleanMixin): # inherit the mixin
... # your code
class EditItem(FormCleanMixin): # inherit the mixin
... # your code
答案 1 :(得分:1)
您可以使用继承:
EditItem
继承自NewItem
:EditItem(NewItem)
clean()
方法的类,例如CleanItemForm(ModelForm)
,然后定义NewItem(CleanItemForm)
和EditItem(CleanItemForm)
。注意:我是Django的新手,可能还有其他方法我不知道。