Aar*_*ron 141 python django django-models django-validation
我只是好奇是否有人知道django的orm是否有充分理由不在模型上调用'full_clean',除非它被保存为模型表单的一部分.
请注意,调用模型的save()方法时,不会自动调用full_clean().如果要为自己手动创建的模型运行一步模型验证,则需要手动调用它. django完全干净的文档
(注意:为Django 1.6更新了引用...以前的django文档也有关于ModelForms的警告.)
有没有充分的理由让人们不想要这种行为?我想如果你花时间为模型添加验证,那么每次保存模型时都需要运行验证.
我知道如何使一切正常工作,我只是在寻找解释.
lqc*_*lqc 56
AFAIK,这是因为向后兼容.ModelForms也存在问题,包括排除的字段,具有默认值的模型,pre_save()信号等.
您可能感兴趣的来源:
Alf*_*ang 28
考虑到兼容性,在django内核中未启用自动保存保存.
如果我们要启动一个新项目并希望save
Model上的默认方法可以自动清理,我们可以在保存每个模型之前使用以下信号进行清理.
from django.dispatch import receiver
from django.db.models.signals import pre_save, post_save
@receiver(pre_save)
def pre_save_handler(sender, instance, *args, **kwargs):
instance.full_clean()
Run Code Online (Sandbox Code Playgroud)
M.V*_*oid 11
调用full_clean
方法的最简单方法是覆盖以下save
方法model
:
def save(self, *args, **kwargs):
self.full_clean()
return super(YourModel, self).save(*args, **kwargs)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
24587 次 |
最近记录: |