说我有Django模型:
class Data(models.Model):
name = models.CharField(max_length=50, blank=False)
some_number = models.DecimalField(max_digits=6, blank=False)
optional_field = models.CharField(max_length=20)
并且我正在尝试验证数据列表是否将满足模型条件。说我有这个清单:
myData = [
['bob', 25.22, None], #should pass
['jane', 123.45678, "foo"], #should fail some_number max_digits=6
[None, 25.22, "bar"] #should fail name blank=False
]
是否有一种干净快速的方法来测试每一行是否通过或失败,并且还可以确定如果失败则不满足哪个条件?
答案 0 :(得分:1)
我认为您可以根据数据模型创建ModelForm,然后将数据提供给该表单。该表格将验证给定的数据,并在必要时输出任何错误(带有说明)。如果您不想将给定的数据保存到数据库中,只需重写ModelForm save()方法即可,它不会执行任何操作。
答案 1 :(得分:0)
您可以在模型实例上调用full_clean()
方法
from django.core.exceptions import ValidationError
myData = [
{"name":'bob',"some_number": 25.22,"optional_field": None},
{"name":"jane","some_number": 123.45678,"optional_field": "foo"},
{"name":None, "some_number":25.22, "optional_field": "bar"}
]
for row in myData:
try:
instance = LCSData(**row)
instance.full_clean()
except ValidationError as e:
print(e.message_dict)