模型Django中有什么剂量清洁功能?不以形式

问题描述 投票:0回答:1

干净,我们应该在哪里放检查?

然后我找到了这张照片:
输入图像描述在这里

因此,我们有很多干净的功能,我只想知道他们在做什么。 和 如果要添加一个过滤器,使用“清洁”是否正确,该过滤器确保我们不会从一个模型(表)中x对象多?

我认为使用“ def save()”似乎更适合解决这种检查,但我不确定。


django模型中的

clean
sql django django-models orm model
1个回答
0
投票
clean_fields

的方法,该方法在每个字段上运行干净的方法,并在有任何错误(如果有任何错误)基于字段中引起验证错误。因此,

clean_fields
方法提出的错误将基于字段,例如:
{
    "name": "Invalid name format",
    ...
}
但是

clean
方法会引起非场错误,这意味着错误与任何字段无关。提出的错误可能是:

{ "non_field_errors: [ "Invalid name format" ] }

(注意:此处的错误格式可能有所不同。)

当我们想在模型字段上进行一些验证时,使用干净功能是有意义的。 但是,正如您提到的,限制特定模型对象数量的用例,应该在模型上使用
save
方法是一个很好的选择。

示例:

def save(self, *args, **kwargs): if not self.pk and MyModel.objects.count() >= 10: raise ValidationError("Cannot create more than 10 objects.") super().save(*args, **kwargs)

您也可以使用

clean

方法进行相同的操作,但是您需要确保在每次保存之前执行

clean
方法,并且不会自动发生,然后您需要手动触发它,可以通过调用
full_clean

在每次保存之前。可以使用

save
方法方法来保存此开销。
	
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.