当前位置: 首页 > 面试题库 >

区分null=True, blank=True in django

轩辕华辉
2023-03-14
问题内容

当我们在Django中添加数据库字段时,通常会这样写:

models.CharField(max_length=100, null=True, blank=True)

同样是与做ForeignKey,DecimalField等有什么根本区别在其

  1. null=True only
  2. blank=True only
  3. null=True, blank=True
    在相对于不同的(CharField,ForeignKey,ManyToManyField,DateTimeField)字段。使用1/2/3有什么优点/缺点?

问题答案:

null=True在数据库的列中设置NULL(与相对NOT NULL)。Django字段类型(例如DateTimeField或)的空白值ForeignKey将存储NULL在数据库中。

blank确定是否需要表单中的字段。这包括管理员和你的自定义表单。如果blank=True是,则不需要该字段,而如果是,则False该字段不能为空。

两者的组合是如此频繁,因为通常如果你要允许表单中的字段为空白,则还需要数据库来允许NULL该字段的值。CharFieldsTextFields 是例外,在Django中从不将其保存为NULL。空值作为空字符串('')存储在DB中。

一些例子:

models.DateTimeField(blank=True) # raises IntegrityError if blank

models.DateTimeField(null=True) # NULL allowed, but must be filled out in a form

显然,这两个选项在使用上没有逻辑意义(尽管可能会有用例,null=True, blank=False如果你希望始终以表单形式要求字段,而在通过诸如Shell之类的对象处理对象时是可选的。)

models.CharField(blank=True) # No problem, blank is stored as ''

models.CharField(null=True) # NULL allowed, but will never be set as NULL

CHARTEXT类型永远不会NULL被Django 保存,因此null=True没有必要。但是,你可以手动设置这些字段之一None以强制将其设置为NULL。如果你有可能需要这样做的情况,则仍应包括null=True



 类似资料:
  • 问题内容: 当我们在Django中添加数据库字段时,通常会这样写: 同样是与做,等有什么根本区别在其 null=True only blank=True only null=True, blank=True 在相对于不同的字段。使用1/2/3有什么优点/缺点? 问题答案: 在数据库的列中设置NULL(与相对)。字段类型(例如或)的空白值将存储在数据库中。 blank确定是否需要表单中的字段。这包括

  • 本文向大家介绍django模型类中,null=True,blank=True用法说明,包括了django模型类中,null=True,blank=True用法说明的使用技巧和注意事项,需要的朋友参考一下 1.模型类中设置:null=True,表示数据库创建时该字段可不填,用NULL填充. MySQL: Null这一列,如果值为YES表示:创建一条新记录时,该字段可不填,数据库会用默认值NULL填充

  • 问题内容: 有什么不同?您什么时候使用什么? 问题答案: 直接来自Django模型字段参考: 如果为,则Django将在数据库中存储空值。默认值为。 请注意,空字符串值将始终存储为空字符串,而不是。仅用于非字符串字段,例如整数,布尔值和日期。对于这两种类型的字段,如果您希望允许使用表单中的空值,则还需要进行设置,因为该参数仅影响数据库的存储(请参阅参考资料)。 除非有充分的理由,否则请避免在基于字

  • 描述 (Description) 字符类\p{Blank}匹配空格或制表符。 例子 (Example) 以下示例显示了Posix字符类匹配的用法。 package com.wenjiangs; import java.util.regex.Matcher; import java.util.regex.Pattern; public class PosixCharacterClassDemo {

  • Adobe的Type团队近日宣布,该公司已经开源了一个专用字体——Adobe Blank,可以在相应的web字体加载前作为一个占位符使用。 Adobe Blank,顾名思义,就是完全用空白字符打造的字体,其特点如下: 覆盖所有Unicode 代码点 所有代码点使用非间距、非标识的形式呈现,即基本上显示为不可见的字符 该字体主要有两个目的: 作为临时措施,防止系统级别或应用程序级别的备用字体在预定字

  • Jekyll Target Blank Automatically adds a target="_blank" rel="noopener noreferrer" attribute to all external links in Jekyll's content plus several other automation features for the external links. Re