[英]Why is “blank” is missing in django.forms.CharField, but present in django.db.models.CharField?
[英]Models CharField Blank and Null
我有以下 model:
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。 我也讀過這個解釋。
您知道為什么要創建 object 嗎?
null=False
並不意味着CharField
不能將空字符串作為值。 此外,模型的create
和save
等方法在創建 model 時不會對其進行驗證。 blank
屬性在 model 驗證時使用,通常當您調用form.is_valid()
時,表單會調用 model 上可用於驗證實例的各種方法。 您可以通過簡單地調用full_clean
方法來驗證實例(參考驗證對象 [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()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.