想象一下,我们有一个Django ORM模型,我们称之为MyModel
,它是各自的形式,我们称之为MyForm
。另外,让我们假设MyModel
中有一个字段已从MyForm
中排除。我们称这个字段为excluded_field
。问题是,当我们必须在表单验证期间使用excluded_field
时,我们如何处理这种情况(意思是表单的clean
方法)?
我喜欢按照doc建议的形式clean
和field_name_clean
方法封装用户输入验证和相应的自定义错误消息,因为将所有业务逻辑移动到表单使我的视图优雅而简单,整个代码DRY。 / p>
具体来说,请考虑以下代码:
型号:
class MyModel(models.Model):
# ...some fields
excluded_field = models.CharField()
class Meta:
managed = False
db_table = 'my_model'
各自的表格:
class MyForm(forms.ModelForm):
def clean(self):
# how do I access excluded_field here ?
有人可能会问我为什么要从表格中排除这个字段?嗯,这是因为该字段的值是以编程方式生成的,并且用户不会 - 也不应该 - 知道有关其值的任何信息。
所以,问题是,如果我们需要用于用户输入验证,我们是否可以访问表单clean
方法中的排除字段,或者对于这种情况,我们必须组织用户输入验证在视图中使用模型实例而不是表单?