簡體   English   中英

型號 CharField Blank 和 Null

[英]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不能將空字符串作為值。 此外,模型的createsave等方法在創建 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM