我的Django应用程序中有一个脚本,该脚本用于从Web抓取一些数据,并使用Django模型将结果保存到数据库中。
例如,我有以下模型:
class WebPage():
diff = models.TextField()
url = models.TextField()
首先,我假设由于blank
默认为False
,所以我将无法意外地保存缺少url
或diff
的模型。但是,这不是正确的,因为数据库很高兴地存储了一个欠填充模型:
我试图在字段上定义一些验证器:
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,我很惊讶没有任何简单的方法来禁止字段中的空值。我想念什么吗?