添加数据
第一种:views中添加数据如下:在学生表中添加数据
# Student是模型(models.py)中创建的学生类
Student.objects.create(
stu_name = '张三',
stu_sex = '男',
stu_birth = '2018-4-5',
stu_chinese = 89,
)
第二种添加数据的方式:
stu = Student(stu_name = '张三',
stu_sex = '男',
stu_birth = '2018-4-5',
stu_chinese = 89)
stu.save()
删除数据
删除表中所有的数据
Student.objects.all().delete()
删除stu_name =’张三’的数据
Student.objects.get(stu_name ='张三').delete()
删除年龄等于20的多条数据
Studnt.objects.filter(stu_age = 20).delete()
更新数据
第一种方式:把名字为张三的记录的数据修改为李四
# 先查到要修改的记录
stu = Student.objects.get(stu_name ='张三')
# 修改名字
stu.name = '李四'
# 提交修改(保存)
stu.save()
第二种方式:
Student.objects.get(stu_name = '张三').update(stu_name = '李四')
查询数据
数据库表中的关系:
- 一对一的关系:OneToOneField
- 一对多的关系 : ForeignKey
- 多对多的关系: ManyToManyField
两张表一对一关系的查询:
# 通过扩展表的学生地址去查找学生的信息
#查找addr =成都武侯区的学生的信息
#第一种方法 (第一种方法太耗数据库性能,因为要查循两次数据库)
stus = StudentInfo.objects.filter(stu_addr='成都武侯区')
stu = stus[0]
selstu = Student.objects.filter(id = stu.id)
#第二种方法
stus = StudentInfo.objects.filter(stu_addr='成都武侯区')
stu=stus[0]
#第一个stu是获取的学生的对象,就是stus[0],第二个stu是模型中定义和Student一对一关联的字段
selstu = stu.stu
# 通过学生表去查找学生拓展表的信息
# 查找stu_name = 张三的家庭住址
# 第一种方法(两次查询太耗数据库性能)
stu = Student.objects.filter(stu_name='张三').first()
selstu = StudentInfo.objects.filter(id=stu.id)
print(stu.id)
# 第二种方法
stu = Student.objects.filter(stu_name='张三').first()
selstu = stu.studentinfo
两张表(班级表,和学生表),一对多的关系查询
# 查询python班级下的学生e
#方法一(太耗数据库性能)
g = Grade.objects.get(g_name ='python')
stus = Student.objects.filter(g_id = g.id)
#方法二
g = Grade.objects.get(g_name='python')
stus = g.student_set.all()
print(stus)
# 查询叫李白的同学的班级信息
stu = Student.objects.get(stu_name = '李白')
gs = stu.g
两张表(用户表和购买物品表)多对多的关系
# 获取小乔购买的商品
u = GoodsUser.objects.filter(u_name='小乔')[0]
goods = u.goods_set.all()
# 获取购买娃哈哈用户的信息
g = Goods.objects.get(g_name='娃哈哈')
users = g.g_user.all()
return render(request,'goods.html',
{'goods':goods,'users':users})