当前位置: 首页 > 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.jsqmd.com/news/35304/

相关文章:

  • Java Redis “Sentinel(哨兵)与集群”面试清单(含超通俗生活案例与深度理解) - 实践
  • 应用于ElasticSearch的C++ API——elasticlient - 教程
  • China Collegiate Programming Contest (CCPC) Jinan Site (The 3rd Universal Cup. Stage 17: Jinan) 题解
  • csp-j/s历险记
  • 深信服AC1700
  • 2025年FFS重膜包装机厂家综合实力排行榜TOP5
  • 2025年国内重袋包装机品牌推荐榜单
  • 164. 最大间距
  • 软考完结篇
  • 2025大厂高频软件测试面试真题(附答案)
  • visio绘制带公式图片作为latex插图
  • Jenkins Pipeline post指令详解 - 实践
  • SGLANG Docker容器化部署指南
  • 保研经验分享
  • Vibe Coding - 零成本使用claude code 、gpt-5、grok-code-fast-1氛围编程
  • MyBatis-Plus分页查询中distinct与order by组合的SQLServer兼容性问题解析 - 教程
  • 【React】useMemo 和 useEffect 的用法 - 实践
  • [LangChain] 15. 内存型向量库
  • 完整教程:从架构师视角看 RPC:分布式系统的灵魂纽带
  • 题解:qoj8047 DFS Order 4
  • Oracle数据库恢复检查脚本
  • 视野修炼-技术周刊第126期 | TypeScript #1
  • 详细介绍:FPGA 中的 AXI 总线介绍
  • 深入解析:眼控交互:ErgoLAB新一代人机交互方式
  • 大模型、智能体和MCP服务间的交互
  • 2025年国内成人自考机构口碑推荐排行榜单:权威解析与选择指南
  • 大信息领域列式存储与云存储的融合发展
  • 2025年六安市成人自考机构口碑推荐排行榜
  • 分享一个Oracle 数据库信息收集脚本
  • 2025年11月杭州集训记