Django-ORM常用字段及参数

 目录

-常用字段

--内容

--自定义字段

-字段参数

--普通

---null

---unique

---db_index

---default

-- DateField和DateTimeField

---auto_now_add

---auto_now

--关系字段ForeignKey

---to

---to_field

---on_delete

--关系字段OneToOneField

---to

---to_field

---on_delete


-常用字段

--内容

orm常用字段
字段解释与MySQL字段对应关系
AutoFieldint自增列,必须填入参数primary_key=True。如果没有自增列,自动创建一个列名为id的自增列integer AUTO_INCREMENT
IntegerField整数类型,-2147483648 ~ 2147483647integer
CharField字符串类型,必须提供max_length参数表示字符长度varchar
DateField日期字段,格式:YYYY-MM-DDdate
DateTimeField日期时间字段,格式YYY-MM-DD HH:mmdatetime
EmailField邮箱字段,字符串类型varchar(254)
BooleanField布尔值类型bool
TextField文本类型,没有字数限制longtext
FileField文件字段,字符类型,upload_to参数用于指定上传文件的保存路径varchar

--自定义字段

比如Django中的CharField对应的MySQL数据库中的varchar类型,没有设置对应char类型的字段

但是Django允许我们自定义新的字段

from django.db import models

# Create your models here.

#Django中没有对应的char类型字段,但是我们可以自己创建
class FixCharField(models.Field): # 自定义的char类型的字段类,名字任取,继承models.Field
    def __init__(self, max_length, *args, **kwargs):
        self.max_length = max_length
        super().__init__(max_length=max_length, *args, **kwargs)

    def db_type(self, connection):
        # 限定生成的数据库表字段类型char,长度为max_length指定的值
        return 'char(%s)' % self.max_length    # 返回char类型

#应用上面自定义的char类型
class Test(models.Model):
    test_name=FixCharField(max_length=16)  # char(16)

-字段参数

--普通

---null

用于表示某个字段可以为空

---unique

如果设置为unique=True 则该字段在此表中唯一

---db_index

如果db_index=True 则代表着为此字段设置索引。

---default

为该字段设置默认值

-- DateField和DateTimeField

---auto_now_add

配置auto_now_add=True,创建数据记录的时候会把当前时间记录下来,之后只要不人为修改就一直不变

---auto_now

配置上auto_now=True,每次更新数据记录的时候,会自动将当前时间更新

--关系字段ForeignKey

一般把ForeignKey字段设置在 '一对多'中'多'的一方,ForeignKey同时也可以和自身做关联关系。

---to

设置要关联的表

---to_field

设置要关联的表的字段

---on_delete

当删除关联表中的数据时,当前表与其关联的行的行为

1、models.CASCADE
    级联操作,当主表中被连接的一条数据删除时,从表中所有与之关联的数据同时被删除
2、models.SET_NULL
    当主表中的一行数据删除时,从表中所有与之关联的数据的相关字段设置为null,此时注意定义外键时,这个字段必须可以允许为空
3、models.PROTECT
    当主表中的一行数据删除时,由于从表中相关字段是受保护的外键,所以都不允许删除,引发错误IntegrityError
4、models.SET_DEFAULT
    当主表中的一行数据删除时,从表中所有相关的数据的关联字段设置为默认值,此时注意定义外键时,这个外键字段应该有一个默认值
5、models.SET()
    当主表中的一条数据删除时,从表中所有的关联数据字段设置为SET()中设置的值,与models.SET_DEFAULT相似,只不过此时从表中的相关字段不需要设置default参数
6、models.DO_NOTHING
    什么都不做,一切都看数据库级别的约束,注数据库级别的默认约束为RESTRICT,这个约束与django中的models.PROTECT相似

--关系字段OneToOneField

一对一字段

---to

设置要关联的表

---to_field

设置要关联的字段

---on_delete

当删除关联表中的数据时,当前表与其关联的行的行为,同上

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

weer-wmq

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值