模型 CharField 空白和空
Posted
技术标签:
【中文标题】模型 CharField 空白和空【英文标题】:Models CharField Blank and Null 【发布时间】:2021-08-04 11:17:23 【问题描述】:我有以下型号:
class Scenario(models.Model):
title = models.CharField(max_length=30)
subtitle = models.CharField(max_length=60)
description = models.TextField(max_length=1000)
image_url = models.ImageField(upload_to ='scenarios-pictures/%Y/%m/%d', default="", blank=False, null=False)
slug = models.SlugField(null=True, unique=True)
active = models.BooleanField(default=False)
def __str__(self):
return self.title
如果我尝试使用空值创建场景,它不会引发任何异常。
>>> from ihm_maquette.models import Scenario
>>> scenario = Scenario.objects.create(title='', subtitle='', description='', image_url='', slug='')
>>> scenario
<Scenario: >
>>>
我不明白为什么,因为我在文档中读到空白和 null 默认为 False。 I've also read this explanation.
你知道为什么要创建这个对象吗?
【问题讨论】:
【参考方案1】:null=False
并不意味着 CharField
不能将空字符串作为值。此外,模型的create
和save
等方法在创建模型时不会验证模型。 blank
属性在模型验证时使用,通常当您调用form.is_valid()
时,表单会调用模型上可用于验证实例的各种方法。只需调用full_clean
方法即可验证实例(参考Validating objects [Django docs]):
from ihm_maquette.models import Scenario
# Don't call create instantiate it first
scenario = Scenario(title='', subtitle='', description='', image_url='', slug='')
scenario.full_clean() # will raise exception here
scenario.save()
【讨论】:
完整答案,也请阅读参考资料。谢谢!以上是关于模型 CharField 空白和空的主要内容,如果未能解决你的问题,请参考以下文章