我只是好奇有没有人知道为什么django的orm没有调用“full”
_
在模型上进行清理,除非将其保存为模型表单的一部分。
请注意,完整的
_
当您调用模型的save()方法时,clean()不会自动调用。当您想要为自己手动创建的模型运行一步模型验证时,您需要手动调用它。
django的完整干净文档
(注: Django 1.6更新了报价...以前的django文档也有关于ModelForms的警告。)
为什么人们不想要这种行为,有什么很好的理由吗?我认为,如果您花时间将验证添加到模型中,您会希望每次保存模型时都运行验证。
我知道如何让一切正常工作,我只是在寻找一个解释。
发布于 2010-12-15 00:47:58
AFAIK,这是因为向后兼容。ModelForms中排除的字段、具有默认值的模型、pre等也存在问题
_
save()信号等。
您可能感兴趣的来源:
http://code.djangoproject.com/ticket/13100
http://groups.google.com/group/django-developers/browse
_
frm/thread/b888734b05878f87
发布于 2015-09-07 13:56:39
由于兼容性的考虑,在django内核中没有启用保存时自动清除。
如果我们正在启动一个新项目,并且想要缺省的
模型上的方法可以自动清理,我们可以在保存每个模型之前使用以下信号进行清理。
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()
发布于 2016-08-12 17:57:44
调用
方法只是重写
方法:
class YourModel(models.Model):
...
def save(self, *args, **kwargs):
self.full_clean()
return super(YourModel, self).save(*args, **kwargs)
https://stackoverflow.com/questions/4441539
复制相似问题