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

Python-在django中区分null=True,blank=True

汪翰墨
2023-03-14
问题内容

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

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

同样是与做ForeignKeyDecimalField等有什么根本区别在其

  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。如果



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

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

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

  • 问题内容: 我的交互式控制台的简要记录: 到底为什么呢? 编辑: 为了对比起见,请考虑运算符。 这使得有很大的意义,因为虽然和都意味着同样的事,作为一个条件语句,他们真的是不一样的东西。 再次编辑: 更有趣的后果: 问题答案: 因为Python中的Boolean是整数的子类型。从文档中: 布尔值是两个常量对象False和True。它们用于表示真值(尽管其他值也可以视为假或真)。在数字上下文中(例如

  • 问题内容: 我的网站顶部菜单中有外部链接。我想在新标签页中打开这些链接。我可以在HTML中使用“ target = _blank”来实现。 是否有类似的CSS属性或其他属性? 问题答案: 抱歉不行。在2013年,无法使用纯CSS做到这一点。 更新 :感谢showdev链接到CSS3 Hyperlinks的过时规范,是的,没有浏览器实现它。因此,答案仍然有效。

  • 问题内容: 我试过运行这段代码: 并输出 False 。我认为Python会将任何有价值的东西都视为 True 。为什么会这样呢? 问题答案: 从 6.11开始。 布尔运算: 在布尔运算的上下文中,以及当控制流语句使用表达式时,以下值将解释为false:False,None,所有类型的数字零以及空字符串和容器(包括字符串,元组,列表,字典) ,集合和Frozensets)。所有其他值均解释为tru