次の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=False
ためnull=False
、モデルインスタンスをデフォルト値(CharFieldの場合は空の文字列であると思います)で保存することは間違いなく失敗するはずです!では、なぜこれが起こらないのですか?