前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Django小技巧08: Blank or Null

Django小技巧08: Blank or Null

作者头像
用户1416054
发布2018-11-29 17:42:22
1.1K0
发布2018-11-29 17:42:22
举报
文章被收录于专栏:JackeyGao的博客JackeyGao的博客

翻译整理自: simpleisbetterthancomplex.com

Django Model API 中提供了blanknull两个参数, 非常容易混淆。当我第一次使用 Django 的时候, 总是不能恰当的使用这两个参数。

看起来两者都做了几乎相同的事情, 但是这两者还是有区别的:

  • null: 数据库相关; 定义数据库字段的值是否接受空值。
  • blank: 验证相关, 当调用form.is_valid()时, 将会判断值是否为空.

虽然两者的是有区别的, 但一个拥有null=Trueblank=False的字段是完全没有问题的。 在数据库级别上, 该字段可以为 NULL, 但在应用程序级别上, 它是必填字段(前提你通过 Django 标准的 Form 进行判断)。

大多数开发人员都对基于字符串的字段(CharFieldTextField)定义null=True, 这其实是没有必要的, 应该避免这样做,因为 Django约定使用空字符串设置空值, 而非Null.

所以, 如果你想设置一个基于字符的字段可以为空,那么你应该这样做:

Python

代码语言:javascript
复制
class Person(models.Model):
    name = models.CharField(max_length=255)  # 强制填写
    bio = models.TextField(max_length=500, blank=True)  # 可选填写 (不要设置null=True)
    birth_date = models.DateField(null=True, blank=True) # 可选填写 (这里你应该设置null=True)

默认值

  • null: False
  • blank: False

NullBooleanField

当您需要为BooleanField字段设置允许为空时, 您应该使用NullBooleanField代替,而非通过参数.

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 默认值
  • NullBooleanField
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档