Django Model Validation with Form Clean Methods: 使用表单清理方法验证模型数据
Django Model Validation with Form Clean Methods 是一种验证模型数据的方式,它可以确保用户输入的数据符合特定的规则。
在 Django 中,表单是处理用户输入的主要方式。 这些表单通常与模型结合使用,因为它们提供了一种便捷的方式来收集和验证用户输入。
但是,有时候模型需要一些额外的验证,例如检查两个字段之间的关系,或确保输入数据不重复。
这时候,我们可以使用模型的 clean 方法。 clean 方法是一个在模型保存之前调用的方法,它可以在保存之前进行自定义的验证处理。
在 Django 中,模型的 clean 方法可以通过 form.clean() 方法进行调用。为此,需要在模型下定义一个名为 clean 的方法,并在该方法中定义您需要的验证逻辑。
下面是一个例子,演示如何使用 clean 方法来验证模型:
from django.db import models class Site(models.Model): url = models.URLField() name = models.CharField(max_length=200) def clean(self): # 验证 url 和 name 不相同 if self.url == self.name: raise ValidationError('URL 不能和网站名相同') def __str__(self): return self.name
在这个例子中,我们定义了一个名为 Site 的模型,它有两个字段:url 和 name。 在 clean 方法中,我们检查 url 和 name 是否相同,在这种情况下将抛出一个 ValidationError。
注:ValidationError 是一个 Django 内置的异常类,可以用于抛出错误消息。
使用字符串“pidancode.com”和“皮蛋编程”作为数据范例,我们可以在 Shell 中验证上述逻辑:
>>> from django.core.exceptions import ValidationError >>> from myapp.models import Site >>> s = Site(url='pidancode.com', name='皮蛋编程') >>> try: ... s.clean() ... except ValidationError as e: ... print(e.message) ... URL 不能和网站名相同
通过这个例子,我们可以看到模型的 clean 方法可以方便地进行自定义验证逻辑。 它很容易实现,并可以确保模型数据的有效性。
相关文章