检查值是否满足Django模型的条件

时间:2018-10-03 17:29:13

标签: python django django-models

说我有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
    ]

是否有一种干净快速的方法来测试每一行是否通过或失败,并且还可以确定如果失败则不满足哪个条件?

2 个答案:

答案 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)