> 文档中心 > Python Web框架——Django学习的第七天(ORM层——基础字段及选项,ORM基本操作——创建数据)

Python Web框架——Django学习的第七天(ORM层——基础字段及选项,ORM基本操作——创建数据)


一:ORM层——基础字段选项1

1.创建模型类流程

  • 创建应用
  • 在应用下的models.py中编写模型类
from django.db import modelsclass 模型类名(models.Model)     字段名 = models.字段类型(字段选项)
  • 迁移同步 makemigration和migrate

注意:任何关于表结构的修改,务必在对应模型类上修改
例:为bookstore_book表添加一个名为info的字段varchar(100)
models.py

class Book(models.Model):    title = models.CharField('书名',max_length=50,default='')    price = models.DecimalField('价格',max_digits=7,decimal_places=2)    info = models.CharField('描述',max_length=100,default='')

2.模型类——字段类型
(1)BooleanFiled()
数据库类型:tintint(1)
编程语言中:使用True或False来表示值
在数据库中,使用1或0来表示具体的值
(2)CharField()
数据库类型:varchar
注意:必须要指定max_length参数值
(3)DataField()
数据库类型:date
作用:表示日期
参数:

  • auto_new:每次保存对象时,自动设置该字段为当前时间(取值:True/False).
  • auto_now_add:当对象第一次被创建时自动设置当前时间(取值:True/False).
  • defult:设置当前时间(取值:字符串格式如:’2019-6-1‘)
    以上三个参数只能多选一
    (4)DateTimeField()
    数据库类型:dateTime(6)
    作用:表示日期和时期
    参数通DateField
    (5)FloatFiled
    数据库类型:double
    编程语言中国和数据库中都使用小数表示值
    (6)DecimalField()
    数据库类型:decimal(x,y)
    编程语言中:使用小数表示该列 的值
    在数据库中:使用小数
    参数:
    max_digits:位数总数,包括小数点后的位数。该值必须大于等于decimal_plces
    decimal_places:小数点后的数字数量
    (7)EmailField()
    数据库类型:varchar
    编程语言和数据库中使用字符串
    (8)IntegerFeild
    数据库类型:int
    编程语言和数据库中使用整数
    from django.db import models
    class 模型类名(models.Model):
    字段名 = models.字段类型(字段选项)

二:模型类——字段选项2

1.模型类——字段选项

  • 字段选项,指定创建的列的额外的信息

  • 允许出现多尔字段选项,多个选项之间使用,隔开

  • primary+key
    如果设置为True,表示该列为主键,如果指定一个字段为主键,则此数据库表不会创建id字段

  • blank
    设置为True时,字段可以为空。设置为False时,字段是必须填写的

  • null
    如果设置为True,表示该列值允许空。
    默认为False,如果此选项为False建议i加入defalut选项来设置默认值

  • default
    设置所在列的默认值,如果字段选项null=False建议添加此项

  • db_index
    如果设置为True,表示为该列增加索引

  • unique
    如果设置为True,表示该字段在数据库中的值必须是唯一的

  • db_column
    指定列的名称,如果不指定的话则采用属性名作为列名

  • verbose_name
    设置此字段在admin界面上的显示名称

还有许多及不一一列举了

字段选项样例:
创建一个属性,表示用户名称,长度30个字符,必须是唯一的,不能为空,添加索引

name = models.CharField(max_length=30,unique=True,null=False,db_index=True)

好习惯:修改过字段选项【添加或更改】均要执行
makemigrations和migrate
2.模型类——Meta类
使用内部Meta类来给模型赋予属性,Meta类下有很多内建的类属性,可对模型类做一些控制
实例:

from django.db import models# Create your models here.class Book(models.Model):    title = models.CharField('书名',max_length=50,default='')    price = models.DecimalField('价格',max_digits=7,decimal_places=2)    info = models.CharField('描述',max_length=100,default='')    class Meta: db_table = 'book' #可改变当前模型类对应的表名

三:ORM基本操作——创建数据

1.新手常见问题汇总

2.ORM操作
基本操作包括增删查改操作,即(CRUD操作)
CRUD是指在做计算处理是的增加(Create)、读取查询(Read)、更新(Update)和删除(Delete)
ORM CRUD核心——>模型类.管理器对象
每个继承自models.Model的模型类,都忽悠一个objects对象被同样继承下来,这个对象叫管理器对象。
数据库的增删查改可以通过模型的管理器实现

class MyModels(models.Model):MyModels.objects.create() #objects是管理器对象

创建数据
Django ORM使用一种直观的方式把数据库表中的数据表示乘Python
创建数据中每一个记录就是创建一个数据对象
方案一:
MyModels.objects.create(属性1=值1,属性2=值2)
成功:返回创建好的实体对象
失败:抛出异常
方案2:
创建MyModel实例对象,并调用save()进行保存
obj = MyModel(属性=值,属性=值)
obj.属性 = 值
obj.save()
3.Django shell
在Django提供了一个交互式的操作项目叫Django Shell它能够在交互模式用项目工程的代码执行相应的操作
利用Django shell可以代替编写view的代码来直接操作
注意:项目代码发生变化时,重新进入Django shell
启动方式:
python manage.py shell
案列:
导入bookstore app中的models Book类的表
from bookstore.models import Book
第一种导入数据的方式:

b1 = Book.objects.create(title='python',pub='清华大学出版社',price=20,market_price=25)

再输入:b1
第二种导入表的方式:

b2 = Book(title='Django',pub='清华大学出版社',price=70)

狗狗宠物资料大全