DjangoORM介绍

DjangoORM字段的介绍:

#自增长类型
AutoField() #自增长
BigAutoField() #自增长(更大)

#二进制数据
BinaryField() 

#布尔类型
BooleanField() 
NullBooleanField() #允许为空

#整数类型
PositiveSmallIntegerField() #5个字节大小(正整数)
SmallIntegerField()  #6个字节大小(正负整数)
PositiveIntegerField() #10个字节大小(正整数)
IntegerField() #11个字节大小(正负整数)
BigIntegerField() #20个字节大小(正负整数)

#浮点类型
FloatField()
DecimalField()

#字符串类型
CharField() #对应MySQL中的varchar  
TextField() # 对应MySQL中的longtext


#时间日期类型
DateField() #年月日
DateTimeField() #年月日时分秒
DurationField() #一段时间,在表中是 int类型


#其他类型
EmailField() #邮箱
ImageField() #图片
FileField() #文件
FilePathField() #文件地址
URLField() #url地址
UUIDField() #UUID
GenericIPAddressField() #Ip地址


##################关系型字段######################
#一对一关系
OneToOneField(
   to = '主表名',                    # 可不加to
   to_field = '主表字段名',           # 默认为主表的主键
   on_delete = '级联方式',

) 


#多对一
ForeignKey(
   to='主表名',                    # 可不加to 
   to_field='主表字段名',   # 默认为主表的主键
   on_delete='级联方式',    # models.CASCADE       
   related_name='反向操作的manager'      # 用于代替反向操作的manager, obj.child_set
   db_constraint = True                # 是否创建约束
) 
    
    
ManyToManyFile() #多对多
    #参数为:某个表
    


    
########所有字段都具有的参数############ 
db_colum="XXX"   #修改数据库表中的字段名
primary_key=True #主键
verbose_name="XXX" #设置备注
unique=True #唯一键
null=True  #数据库表为空
blank=True #前端提交表单是否为空
db_index=True #给字段建立索引
help_text="XXX" #显示帮助信息
editable=False #用户不能更改字段

############部分字段才有的参数###########
max_length=100  #字符串类型
unique_for_date=True #时间日期类型 -表示日期必须唯一
unique_for_month=True #时间日期类型 -表示月份必须唯一
auto_now=True #时间日期类型 -更新当前记录的时间
auto_now_add=True #时间日期类型 -创建当前记录的时间
max_digits=4 #DecimalField() -小数总共多少位
decimal_places=2 #DecimalField() -小数点多少位


############关系型字段有的参数###########
related_name="one" #外键关联的反向查询(父表查子表)
on_delete=  #删除有关联的表的操作
    DO_NOTHING    #什么也不做
    CASCADE    #这就是默认的选项,级联删除,你无需显性指定它。
    PROTECT    #保护模式,如果采用该选项,删除的时候,会抛出ProtectedError错误。
    SET_NULL   #置空模式,外键字段被设置为null,前提就是blank=True, null=True,定义该字段的时候,允许为空。
    SET_DEFAULT #置默认值,删除的时候,外键字段设置为默认值,所以定义外键的时候注意加上一个默认值。
    SET()    #自定义一个值,该值当然只能是对应的实体了

#######################举个栗子###########################
class UserInfo(models.Model):
    nid = models.AutoField(primary_key=True)
    username = models.CharField(max_length=32)
 
    class Meta:
        # 数据库中生成的表名称 默认 app名称 + 下划线 + 类名
        db_table = "table_name"
 
        # admin中显示的表名称
        verbose_name = '个人信息'
 
        # verbose_name加s
        verbose_name_plural = '所有用户信息'
 
        # 联合索引 
        index_together = [
            ("pub_date", "deadline"),   # 应为两个存在的字段
        ]
 
        # 联合唯一索引
        unique_together = (("driver", "restaurant"),)   # 应为两个存在的字段

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值