Django model字段类型清单

Django model字段类型清单
最新回答
清茶

2021-08-29 07:40:29

以下是Django模型中常用的字段类型清单,按功能分类整理:

基础字段类型
  • AutoField自动递增的整型主键字段,通常无需手动声明(未指定主键时自动添加)。

  • BooleanField布尔值字段,在Admin后台显示为复选框。

  • CharField短字符串字段,需指定max_length参数。示例:name = models.CharField(max_length=50)

  • TextField长文本字段,Admin后台使用多行文本框。

数值类型
  • IntegerField / PositiveIntegerField / SmallIntegerField / PositiveSmallIntegerField整数类型,支持正数、小范围整数等变体。

  • FloatField浮点数字段,需指定max_digits(总位数)和decimal_places(小数位数)。示例:price = models.FloatField(max_digits=10, decimal_places=2)

日期与时间
  • DateField / DateTimeField / TimeField日期、日期时间或时间字段,支持auto_now(保存时更新)和auto_now_add(创建时设置)参数。
网络相关
  • EmailField校验合法性的邮箱字段(继承自CharField)。

  • URLField存储URL,可设置verify_exists检查链接有效性(默认开启)。

  • IPAddressField存储IP地址(如192.168.1.1)。

文件与图片
  • FileField文件上传字段,需指定upload_to(存储路径)。要求:配置MEDIA_ROOT和MEDIA_URL。

  • ImageField继承自FileField,额外校验图片格式,可选height_field/width_field保存尺寸。

特殊用途
  • CommaSeparatedIntegerField逗号分隔的整数列表(如"1,2,3"),需指定max_length。

  • FilePathField限制选择指定目录下的文件,支持正则匹配(match)和递归子目录(recursive)。

  • SlugField用于URL的短标签(仅含字母、数字、下划线、连字符),默认长度50。

  • XMLField校验合法XML的文本字段(需提供schema_path)。

其他
  • NullBooleanField允许NULL的布尔字段,Admin显示为“Unknown/Yes/No”选择框。

  • USStateField两字母美国州名缩写(如"CA")。

字段选项(通用参数)
  • null / blank控制数据库NULL值和表单空值允许(null=True/blank=True)。

  • default设置默认值(如default=0)。

  • choices限制选项为二维元组(如choices=[(1, 'A'), (2, 'B')])。

  • unique / unique_for_date强制唯一性或按日期唯一(如unique_for_date='pub_date')。

  • db_index为字段创建数据库索引(db_index=True)。

  • help_text在Admin中显示帮助文本。

使用示例from django.db import modelsclass Product(models.Model): name = models.CharField(max_length=100) description = models.TextField() price = models.DecimalField(max_digits=10, decimal_places=2) in_stock = models.BooleanField(default=True) created_at = models.DateTimeField(auto_now_add=True) category = models.CharField( max_length=20, choices=[('electronics', 'Electronics'), ('clothing', 'Clothing')] ) image = models.ImageField(upload_to='products/', null=True, blank=True)

通过合理选择字段类型和参数,可以高效定义符合业务需求的数据库模型。