gpt4 book ai didi

Django 测试不会引发 CharField 的完整性错误

转载 作者:行者123 更新时间:2023-12-02 08:46:47 25 4
gpt4 key购买 nike

如果有以下 Django (1.4) 模型:

from django.db import models

class SimpleModel(models.Model):
name = models.CharField(max_length=100)

这个简单的测试:

from django.test import TestCase
from models import SimpleModel
from django.db import IntegrityError

class SimpleTest(TestCase):
def test_integrity_error(self):
with self.assertRaises(IntegrityError):
m = SimpleModel()
m.save()

使用 sqlite3 数据库作为数据库。如果我现在用 python manage.py test <appname> 运行测试测试失败 AssertionError: IntegrityError not raised .

问题是:为什么?

据我了解(或认为了解)Django,字段的默认值为 blank=Falsenull=False所以我假设用默认值保存模型实例(我认为对于 CharField 应该是一个空字符串)肯定会失败!那么,为什么这没有发生呢?

最佳答案

Django 从不为空的 CharFieldTextField 类型存储 NULL。它存储一个空字符串 ('')。所以这就是为什么您没有得到 null=FalseIntegrityError

至于 blank=False,那只会影响表单。它只是让表单将字段设置为 required=True,因此除非它有值,否则它不会验证。它不会影响数据库或您在表单外手动设置空白值的能力。

关于Django 测试不会引发 CharField 的完整性错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11848162/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com