首页 > 解决方案 > Django TextField 不强制执行空白=假

问题描述

我无法django.db.models.TextField(blank=False)强制执行非空白。它似乎忽略了约束,只强制非空。

例子:

import django.core.exception
import django.db.models
import unittest

class Mymodel(django.db.models.Model):
    id = django.db.models.AutoField(primary_key=True)
    text = django.db.models.TextField(blank=False, null=False)

with self.assertRaises(django.core.exception.ValidationError):
    Mymodel.objects.create()   # <--- should raise validation exception

上面的代码创建了一个字段设置为空白字符串的新Mymodel实例text,但它应该引发一个ValidationError

详细信息:python 3.8.5、django 3.1、postgresql 12.4

标签: djangodjango-models

解决方案


你需要调用full_clean()方法

from django.core import exceptions

class TestTextFieldError(TestCase):
    def test_error(self):
        with self.assertRaises(exceptions.ValidationError):
            instance = Mymodel()
            instance.full_clean()

推荐阅读