当前位置: 首页 > news >正文

Django `models.Field` 所有常见安装参数的完整清单与说明表


一、让字段可以为空

在 Django 的 models.py 中,可以通过设置字段的两个参数来控制是否允许为空:

参数作用范围说明
null=True数据库层面数据库字段允许保存 NULL
blank=True表单验证层面表单提交时允许为空(不强制校验)

✅ 示例:允许字段为空

class User(models.Model):
nickname = models.CharField(max_length=50, null=True, blank=True)
  • null=True → 在数据库中该字段可以为 NULL
  • blank=True → 在 Django 表单(包括 admin)中该字段可以留空

说明:

  • 字符串字段(CharField、TextField) 通常推荐:blank=True, null=False
    (即空字符串 "" 代替 NULL
  • 数字、日期等字段 一般用 null=True 表示无值。

⚙️ 二、Django Model 字段可配置项全集(通用参数)

每个 Django 字段(例如 CharField, IntegerField 等)都继承自 Field 基类,大多支持以下配置:

参数名类型默认值说明
nullboolFalse数据库是否允许为 NULL
blankboolFalse表单/验证是否允许为空
defaultanyNone字段默认值
primary_keyboolFalse是否为主键(会自动加索引)
uniqueboolFalse是否唯一
db_indexboolFalse是否建立数据库索引
db_columnstrNone指定数据库中的字段名
db_tablespacestrNone指定索引表空间(较少用)
choicesiterableNone下拉选择的固定值(用于表单)
verbose_namestrNone字段的人类可读名称
help_textstr“”帮助提示信息(Admin 显示)
editableboolTrue是否可在表单或 Admin 中编辑
error_messagesdictNone自定义验证错误提示
validatorslist[]自定义验证器函数列表
auto_createdboolFalse系统内部标识(通常不手动设)
unique_for_datestrNone限制同一天内唯一(针对日期字段)
unique_for_monthstrNone限制同月内唯一
unique_for_yearstrNone限制同年内唯一

三、特定字段的额外参数

1️⃣ CharField

参数说明
max_length字符串最大长度(必须)

2️⃣ TextField

无额外参数(适合大文本)

3️⃣ IntegerField / FloatField / DecimalField

参数说明
max_digits总位数(仅 DecimalField
decimal_places小数位数(仅 DecimalField

4️⃣ DateTimeField / DateField

参数说明
auto_now每次保存对象时自动更新为当前时间
auto_now_add仅在第一次创建时设置时间

5️⃣ BooleanField

参数说明
默认不允许 NULL,如需三态逻辑用 NullBooleanField(Django 4.0 后用 BooleanField(null=True) 代替)

6️⃣ ForeignKey

参数说明
to关联的模型类
on_delete删除级联方式(必填,如 models.CASCADE
related_name反向引用名
related_query_name反向查询前缀
limit_choices_to限制可选关联对象
db_constraint是否创建外键约束(默认 True)

7️⃣ ManyToManyField

参数说明
to关联模型
related_name反向引用名
through自定义中间表
through_fields指定中间表关联字段
symmetrical是否对称关系(默认 True)

8️⃣ FileField / ImageField

参数说明
upload_to上传文件的路径或函数
storage自定义存储系统(如 S3)

四、实际开发推荐配置示例

class Product(models.Model):
name = models.CharField("产品名称", max_length=100, unique=True)
description = models.TextField("描述", blank=True)
price = models.DecimalField("价格", max_digits=10, decimal_places=2)
stock = models.IntegerField("库存", default=0)
category = models.ForeignKey(
"Category",
on_delete=models.SET_NULL,
null=True,
blank=True,
related_name="products"
)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)

五、小结

想要的效果设置方法
数据库可以为 NULLnull=True
表单可以留空blank=True
两者都允许null=True, blank=True
仅表单可空,数据库为非空字符串blank=True, null=False

http://www.gsyq.cn/news/44075.html

相关文章:

  • Java Redis “Sentinel(哨兵)与集群”面试清单(含超通俗生活案例与深度理解) - 实践
  • 操作系统中的索引节点存放什么数据?
  • CICD程序选型指南,Jenkins vs Arbess哪一款更好用?
  • csp-j/s历险记
  • 2025年重袋包装机品牌排行榜:十大实力厂家综合评测
  • 软考完结篇
  • 深度学习优化算法深入分析:从 SGD 到 LAMB - 指南
  • 记录一些生活。
  • visio绘制带公式图片作为latex插图
  • Jenkins Pipeline post指令详解 - 实践
  • 训练资源大合集
  • MyBatis报错SQL 命令未正确结束
  • SGLANG Docker容器化部署指南
  • 保研经验分享
  • 完整教程:从架构师视角看 RPC:分布式系统的灵魂纽带
  • 视野修炼-技术周刊第126期 | TypeScript #1
  • 分享一个Oracle 数据库信息收集脚本
  • Zabbix服务告警:More than 75% used in the configuration cache
  • mounriver studio WINDOWS启动报错解决
  • Python 潮流周刊#126:新一代静态网站生成器
  • 第二章数据预处理:公式Python代码完成
  • 《代码大全 2》观后感(七):代码重构 —— 让代码 “永葆青春”
  • 深入解析:MySQL 存储引擎深度解析:InnoDB 架构与配置优化指南
  • OSPF协议详解4:实验 - OSPF区域、网络类型与高级路由控制实践 - 实践
  • 2025年安徽猪肉批发厂家口碑排行TOP5
  • 插槽vue/react - 详解
  • AT_tokiomarine2020_e O(rand)
  • 2025年合肥甲醛检测公司哪家好?专业机构排名与选择指南
  • 【学弟向】图的存储与遍历,最短路,连通性 tarjan,树状数组
  • 完整教程:Redis-Zest