非空值的Django字段验证

时间:2018-06-24 13:14:08

标签: django django-models django-validation

我的Django应用程序中有一个脚本,该脚本用于从Web抓取一些数据,并使用Django模型将结果保存到数据库中。

例如,我有以下模型:

class WebPage():
    diff = models.TextField()
    url = models.TextField()

首先,我假设由于blank默认为False,所以我将无法意外地保存缺少urldiff的模型。但是,这不是正确的,因为数据库很高兴地存储了一个欠填充模型:

我试图在字段上定义一些验证器:

diff = models.TextField(validators=[MinLengthValidator(1)])
url = models.TextField(validators=[URLValidator()])

但这没有用,因为显然必须在每次保存之前调用full_clean(),例如:

from django.db.models.signals import pre_save

def validate_model(sender, **kwargs):
    if 'raw' in kwargs and not kwargs['raw']:
        kwargs['instance'].full_clean()

pre_save.connect(validate_model, dispatch_uid='validate_models')

验证此数据的最佳方法是什么?我不会以任何形式公开它。作为Django,我很惊讶没有任何简单的方法来禁止字段中的空值。我想念什么吗?

0 个答案:

没有答案