Django的ORM框架 field类型和参数总结

Django的ORM(Object-Relational Mapping)框架提供了一种机制,允许开发者以Python类的方式定义数据库模型,而无需直接编写SQL语句。在定义模型时,字段(Field)是不可或缺的部分,它们定义了数据库表中每一列的数据类型和特性。以下是一些常用的Django ORM字段类型及其参数总结:

常用字段类型

  1. AutoField
    • 自增的整数型字段,通常作为主键。
    • 参数:primary_key=True(设为True时,Django会自动将其设置为模型的主键)
  2. CharField
    • 字符串字段,用于较短的文本。
    • 参数:max_length(必须,表示字符串的最大长度),null=True(允许为空),blank=True(表单验证时允许为空)
  3. TextField
    • 大文本字段,用于较长的文本。
    • 参数:null=Trueblank=True
  4. IntegerField
    • 整数型字段。
    • 参数:null=Trueblank=True(对于整数,blank通常不用,因为它更多用于表单验证)
  5. FloatField
    • 浮点型字段,用于存储需要小数点的数值。
    • 参数:null=True
  6. DecimalField
    • 十进制浮点数,用于需要精确表示的数值,如货币。
    • 参数:max_digits(总位数),decimal_places(小数点后的位数),null=True
  7. BooleanField
    • 布尔型字段,存储True或False。
    • 参数:default=False(默认值),null=True(通常不用,因为布尔型有默认值)
  8. DateField
    • 日期字段,格式为YYYY-MM-DD。
    • 参数:auto_now=False(每次保存对象时,自动设置为当前日期,通常用于更新时间戳),auto_now_add=False(创建对象时自动设置为当前日期,通常用于创建时间戳),null=True
  9. DateTimeField
    • 日期时间字段,格式为YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]。
    • 参数:与DateField相同
  10. EmailField
    • 字符串类型的电子邮件地址字段。
    • 参数:max_length(默认为254),null=Trueblank=True
  11. URLField
    • 用于保存URL地址的字符串字段。
    • 参数:max_length(默认为200),null=Trueblank=True
  12. ImageField
    • 用于上传图片的字段,需要PIL库。
    • 参数:upload_to(上传目录,可以是函数或字符串),height_field(存储图片高度的字段名,需先定义),width_field(存储图片宽度的字段名,需先定义),null=Trueblank=True
  13. FileField
    • 用于上传文件的字段。
    • 参数与ImageField类似,但不包括height_fieldwidth_field

通用参数

  • verbose_name:为字段设置一个易于理解的名字,用于Django admin后台等。
  • help_text:为字段提供额外的帮助文本。
  • unique:设置为True时,该字段在表中必须是唯一的。
  • choices:设置字段的选项,用于选择类型字段(如性别)。
  • db_index:设置为True时,会为该字段创建数据库索引。
  • editable:设置为False时,在Django admin后台中将不可编辑。

以上仅是Django ORM中字段类型及其参数的一个概览,实际使用中还有很多其他参数和字段类型可供选择。

在Django ORM中,除了之前提到的常见字段类型外,还有其他一些字段类型用于满足不同的数据存储需求。以下是一些额外的字段类型:

  1. BigIntegerField
    • 用于存储非常大的整数。
    • 它与IntegerField类似,但范围更大,适用于需要存储大整数的场景。
  2. SmallIntegerField
    • 用于存储小整数。
    • 它的范围比IntegerField小,但足以满足许多日常需求,同时可能有助于节省数据库空间。
  3. PositiveIntegerField 和 PositiveSmallIntegerField
    • 这两个字段分别用于存储正整数和小正整数。
    • 它们不允许存储负数,适用于需要确保数据非负的场景。
  4. SlugField
    • 字符串类型,常用于存储URL的slug部分。
    • 它自动将输入的字符串转换为全小写,并将空格替换为连字符或下划线,以生成适用于URL的slug。
  5. UUIDField
    • 用于存储UUID值。
    • UUID是一种广泛使用的唯一标识符,Django提供了这个字段类型以方便地存储UUID值。
  6. GenericIPAddressField
    • 用于存储IPv4或IPv6地址。
    • 它提供了对IP地址的验证,并允许指定是存储IPv4、IPv6还是两者都支持的地址。
  7. CommaSeparatedIntegerField
    • 字符串类型,但专门用于存储逗号分隔的整数列表。
    • 它将输入的字符串视为逗号分隔的整数列表,并在查询时提供相应的便利。
  8. FilePathField
    • 字符串类型,用于存储文件系统中的文件路径。
    • 它允许你指定一个目录,并从该目录中选择文件,以获取文件的相对路径。
  9. BinaryField
    • 用于存储二进制数据。
    • 它允许你以二进制形式存储任何类型的数据,如图片、文件或其他二进制文件。
  10. DurationField
    • 用于存储时间长度。
    • 它以Python的timedelta对象形式存储时间长度,并允许进行相应的时间计算。
  11. ForeignKeyOneToOneField 和 ManyToManyField
    • 这三个字段类型用于定义模型之间的关系。
    • ForeignKey用于定义一对多关系,OneToOneField用于定义一对一关系,ManyToManyField用于定义多对多关系。

这些字段类型提供了丰富的选项,以满足Django项目中各种数据存储和关系定义的需求。在实际应用中,你可以根据具体需求选择合适的字段类型来定义模型。

请注意,Django ORM的字段类型可能会随着Django版本的更新而发生变化或增加新的类型。因此,建议查阅最新的Django官方文档以获取最准确和最新的信息。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值