ray*_*080 12 python django validation model
我认为Django的模型验证对于那些不使用内置ModelForm的模型来说有点不方便,虽然不知道为什么.
首先,full_clean()
需要手动调用.
请注意,调用模型的save()方法时,也不会自动调用full_clean(),也不会因模型化验证而调用.在ModelForm验证的情况下,Model.clean_fields(),Model.clean()和Model. validate_unique()都是单独调用的.如果要为自己手动创建的模型运行一步模型验证,则需要手动调用full_clean.
其次,validators
用于内置ModelForm
.
请注意,保存模型时不会自动运行验证程序,但如果您使用的是ModelForm,它将在表单中包含的任何字段上运行验证程序.
在将数据保存到数据库之前需要进行数据验证时,有很多要求.显然我更喜欢用模型而不是视图来制作它.那么,有没有好的想法来优雅地实现这个full_clean()
?
欢迎任何想法,谢谢!
Joz*_*zef 18
即使在模型级别上强制执行验证的想法似乎是正确的,但Django默认情况下不会出于各种原因这样做.除了一些向后兼容性问题,作者可能不希望支持这一点,因为他们担心这可能会产生错误的安全感,而实际上您的数据并不能保证始终被验证.某些ORM方法(例如bulk_create
或update
)不会调用save()
,因此无法验证您的模型.换句话说,很难保证验证,因此他们决定不假装.
如果您需要多个模型,可以创建一个简单的mixin来覆盖save()
方法和调用full_clean()
之前super
.请注意,这可能会导致验证在某些情况下运行两次,例如使用ModelForm时.如果你的验证程序没有副作用且运行成本低,那么它可能不是一个问题.
有关详细信息,请参阅以下答案:
归档时间: |
|
查看次数: |
8663 次 |
最近记录: |