Django中的models

Django对各种数据库提供了很好的支持,Django为这些数据库提供了统一的调用API,可以根据不同的业务需求选择不同的数据库。

开发流程

1. 配置数据库
配置seting.py和__init__.py
2. 定义模型类
一个模型类都在数据库中对应一张数据表。
3. 生成迁移文件,执行迁移生成数据表

4. 使用模型类进行增删改查(crud)操作


ORM

对象—关系—映射
一个模型类在数据库中对应一张表,在模型类中定义的属性,对应该模型对照表中的一个字段

任务:
1.根据对象的类型生成表结构
2.将对象,列表的操作转换为sql语句
3.将sql语句查询到的结果转换为对象,列表

优点:极大减轻了开发人员的工作量,不需要面对因数据库的变更而修改代码。


定义属性

字段类型

1.CharFied(max_length=字符长度)
字符串,默认的表单样式是TextInput
2.TextField
大文本字段
3.IntegerField
整数
4.DecimalField(max_digits=None,decima_places=None)
使用python的Decimal实例表示的十进制浮点数
max_digits=None
位数总数
decima_places=None
小数点后的数字位数
5.FloatField
用python的float实例来表示的浮点数
6.BooleanField
true/false字段,次字段的默认表单控制是CheckboxInput
7.NullBooleanField
null,true,false三种
8.DateField([auto_now=False, auto_now_add=False])
使用python的datetime.date实例表示的日期
DateFIled.auto_now
每次保存的对象时,自动设置改字段为当前时间,用于“最后一次修改”
的时间戳,它总是使用当前日期,默认为False
DateFiled.auto_now_add
当对象第一次被创建时自动设置当强时间,用于创建时间戳,它总是使用当前日期,默认为False
说明:
该字段默认对应的表单空间时一个TextInput在管理员站点添加了一个JavaScript写的日历空间和一个Today的快捷按钮,包含了一个额外的invalid_date错误信息键
注意:auto_now_add,auto_now, and default这些设置是相互排斥的,任何组合都会发生错误
9.TimeField
10.DateTimeField
11.FileField
上传文件的字段
12.ImageField
继承了FileField属性和方法,但是确保是image

字段选项

  • null
    如果是True,Django将空值以NUll存储到数据库中,默认值是False
  • blank
    如果为True,则该字段允许为空白,默认值是False
  • db_column
    字段的名称,如果未指定,则使用属性的名称
  • db_index
    若值为True,这在表中会为此字段创建索引
  • default
    默认值
  • primary_key
    若为True,则该字段会生成模型的主键字段
  • unique
    如果为True,这个字段在表中必须徐有唯一值

关系
ForeignKey:一对多
格式:对象.模型类小写_set
ManyToManyField:多对多
对象.模型类小写
OneToOneFiled:一对一
对象.属性_id


元选项

在模型中定义Meta类,用于设置元信息
db_table:定义数据库表名
ordering:对象默认排序的字段,获取对象的列表时使用(排序会增加数据库开销)
例:

class Meta
    db_table="students"
    ordering=['id'] #升序
    ordering=[-'id'] #降序

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值