Django 3.0框架之模型操作数据,本篇通过终端来使用模型操作数据。
目录
启动django命令行
命令
python manage.py shell
启动以后界面如下:
引入
引入包和模型类
from myapp.models import Grades,Students
from django.utils import timezone
from datetime import *
增删改查
查询所有数据
例子:类名.objects.all()
Grades.objects.all()
效果如下图:
添加数据
本质:创建一个模型类的对象实例
grade1 = Grades()
grade1.name = 'python1'
grade1.girl_num = 5
grade1.boy_num = 8
grade1.create_time = datetime(year=2023, month=4, day=23)
grade1.save()
grade2 = Grades()
grade2.name = 'python2'
grade2.girl_num = 6
grade2.boy_num = 7
grade2.create_time = datetime(year=2023, month=4, day=23)
grade2.save()
查看某个对象
Grades.objects.get(pk=2)
pk就是primary key的缩写,也就是任何model中都有的主键。
那么id大部分时候也是model的主键,所以在这个时候我们可以认为pk和id是完全一样的。
修改数据
grade1.name = 'python01'
grade1.save()
删除数据
Grades.objects.get(pk=3).delete() # 物理删除
关联对象
很多时候业务都是关联数据操作,不是一对一操作,下面演示关联操作。
添加关联数据
首先往班级1中添加三个学生,用作下面例子进行关联操作。
grade1 = Grades.objects.get(pk=1)
stu = Students()
stu.name = '薛仁贵'
stu.gender = False
stu.age = 18
stu.desc = '千军万马避白袍'
stu.grades = grade1
stu.save()
stu1= Students()
stu1.name = '岳飞'
stu1.gender = False
stu1.age = 30
stu1.desc = '三十功名尘与土,八千里路云和月'
stu1.grades = grade1
stu1.save()
stu2= Students()
stu2.name = '花木兰'
stu2.gender = True
stu2.age = 21
stu2.desc = '替父从军'
stu2.grades = grade1
stu2.save()
获取关联对象集合
需求:获取python1班级所有学生。
grade1 = Grades.objects.get(pk=1)
grade1.students_set.all()
如下显示的是python1班级的所有学生的对象。因为班级本来就有学生,故显示超出3个。
关联对象添加
需求:创建曾志伟同学,属于python2班级
grade2 = Grades.objects.get(pk=2)
grade2.students_set.create(name=u'曾志伟', gender=True, desc=u'我叫曾志伟', age=45)
不需要save,直接添加到数据库中。
数据表中新增了一条数据。
总结
虽然是在命令行中操作的数据增删改查和关联操作,但是这些在模型和视图中都是同样可以使用的。