猿问

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

假设我有 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

    ]

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


互换的青春
浏览 153回答 2
2回答

红颜莎娜

我认为您可以基于数据模型制作ModelForm,然后将数据提供给该表单。该表单将验证给定的数据并在必要时输出任何错误(带有描述)。如果您不想将给定的数据保存到数据库,只需覆盖 ModelForm save() 方法,这样它就不会做任何事情。

喵喔喔

您可以full_clean()在模型实例上调用该方法from django.core.exceptions import ValidationErrormyData = [        {"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)
随时随地看视频慕课网APP

相关分类

Python
我要回答