当前位置: 首页 > 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.dtcms.com/a/457346.html

相关文章:

  • 音乐播放器-单html文件
  • 18+网站推广平面设计师素材网站
  • 告别传统SEO!拥抱下一代流量密码:生成式引擎优化(GEO)实战指南
  • 不抽佣美团核销API接口,同时支持美团抖音核销,快速接入
  • 优化网站关键词的技巧建设银行忘记密码网站
  • 网站建设属于服务还是货物为什么asp.net做的网站上传后不显示照片
  • TT直流减速电机(STM32)
  • MQTT协议三个核心函数的详解
  • 马拉松网站建设方案汽车网站管理系统
  • 【企业架构】TOGAF架构标准规范-技术架构
  • 【Proteus仿真】甲单片机(AT89C51)控制乙单片机(AT89C51)
  • 南阳网站推广优化公司discuz和wordpress区别
  • XSLT `<value-of>` 标签详解
  • 做外贸网站注册什么邮箱懒人模板网站
  • 案例-使用Postman向百度首页发送带时间戳的GET请求
  • leetcode排序链表
  • 做经营性的网站备案条件汉字叔叔花了多少钱做网站
  • 效果好企业营销型网站建设手机html5网站源码
  • 浏览器事件循环与内存管理可视化
  • 虚拟机双网卡设置
  • 吴恩达机器学习课程(PyTorch适配)学习笔记:2.2 前向传播与推理
  • 530.二叉搜索树的最小绝对差(二叉树算法题)
  • 如何解决 pip install -r requirements.txt extras 语法 ‘package[extra’ 缺少 ‘]’ 解析失败问题
  • 青岛网站建设方案辽阳网站建设
  • 磁悬浮轴承中基于位移信号的转子位置与转速估计深度解析摘要
  • 个人和做网站方签合同模板一流的聊城网站建设
  • 什么是UIOTOS?
  • 网站建设书籍论文龙网网络推广软件
  • 蚌埠网站制作公司排名wordpress lazyload
  • Windows中通过wsl运行Ubuntu