一、常用查询:
#常用查询条件
# rs=user.objects.first();#查询第一条数据
# print(rs)
# rs = user.objects.last(); # 查询最后一条数据
# rs=user.objects.exclude(id=3);#查询条件之外的数据
# rs=user.objects.order_by('id')#对查询结果正序排序
# rs=user.objects.order_by('-id')#对查询结果逆排序
# rs=user.objects.order_by('age','id')#对查询结果多字段排序
# rs=user.objects.all().values()#将查询结果变成字典类型
# rs=user.objects.count()#统计查询结果的条数
# print(rs)
# return HttpResponse('查找成功')
#常用的查询条件
# rs=user.objects.filter(name__exact='赵四');#__exact表示等于,如果查询内容中有大小写,则忽略
# rs=user.objects.filter(name__contains='赵')#相当于模糊查询
# rs=user.objects.filter(name__startswith='张')#表示以张为开始的数据
# rs=user.objects.filter(name__endswith='四')#表示以四为结束的数据
# rs=user.objects.filter(age__in=[18,20]);#查询age是18或20的数据
#lt表示小于,gt表示大于,lte表示小于等于,gte表示大于等于
# rs=user.objects.filter(age__range=(10,52))#查询在区间内的数据
rs=user.objects.all()[0:3]#查询结果切片的数据
print(rs);
二、表关系实现:
class ShuaiDu(models.Model):
id = models.AutoField(primary_key=True) # 表示自增长类型,且为主键
name = models.CharField(max_length=30,default='') # 创建一个名字字段,且最大长度为30
age = models.IntegerField() # 创建一个年龄字段
gender=models.BooleanField(default=True);#创建一个性别的字段,默认为true
note=models.TextField()#创建一个介绍的字段
create_time=models.DateField(auto_now_add=True)#创建一个时间字段,默认为年月日
update_time=models.DateField(auto_now=True)#创建一个更新的时间字段
def __str__(self):
return 'id=%s,name=%s,age=%s,gender=%s,note=%s' % (self.id, self.name, self.age,self.gender,self.note);
#导入相应的模型
from .models import Department,Course,detail,Studengt
#创建相应操作的方法
def func(request):
# 添加学院表信息
# Department.objects.create(d_name='计算机学院')
# Department.objects.create(d_name='数信学院')
# Department.objects.create(d_name='文史学院')
# Department.objects.create(d_name='马克思学院')
# Department.objects.create(d_name='机电学院')
# Department.objects.create(d_name='设计艺术学院')
# Department.objects.create(d_name='电气工程学院')
#添加学生
# Studengt.objects.create(s_name='杜锦丰',department_id=1)
# Studengt.objects.create(s_name='杜甫',department_id=2)
# Studengt.objects.create(s_name='老季',department_id=3)
# Studengt.objects.create(s_name='田英',department_id=4)
# Studengt.objects.create(s_name='王三',department_id=5)
# Studengt.objects.create(s_name='花花',department_id=6)
# Studengt.objects.create(s_name='耿耿',department_id=7)
# Studengt.objects.create(s_name='余淮',department_id=3)
# Studengt.objects.create(s_name='李白',department_id=2)
# Studengt.objects.create(s_name='黄河')
#级联查询三种方法:
#1.on_delete=models.CASCADE删除主键,同时删除外键
#2.on.delete=models.SET_NULL,NULL=True,删除数据同时,外键的内容不会同时删除,设置为空
#3.on.delete=model.PROTECT,如果有外键正引用的话,如果删除的主键正好外键正在使用,则删除不成功
#1:n关系的添加
#1.student.objects.add(对象),对象不能为空
#2.student.objects.create(内容)
# d1=Department.objects.get(d_id=1)#获取id为1的学院
#添加学生
# d1.studengt_set.create(s_name='张三丰')
#通过学生找学院
# s2=Studengt.objects.get(s_id=2)#找到id为2的学生
# print(s2.department.d_name)
# s3=Studengt.objects.get(s_id=4);
# print(s3.department.d_name)
#通过学院找学生
# d1=Department.objects.get(d_id=1);#找到id=1的学院
# print(d1.studengt_set.all())#找到d1所有的学生
#1:1关系
# 添加学生详情表信息
# detail.objects.create(s_age=15,s_note='今天查询表信息',s_phone=1245458,student_id=1)
# detail.objects.create(s_age=22,s_note='今天哈哈哈',s_phone=12445458,student_id=2)
# detail.objects.create(s_age=21,s_note='我是谁',s_phone=12451248,student_id=3)
# detail.objects.create(s_age=35,s_note='这是怎么了',s_phone=124145458,student_id=4)
# detail.objects.create(s_age=15,s_note='还得上课',s_phone=124365458,student_id=5)
# detail.objects.create(s_age=55,s_note='上什么课',s_phone=178245458,student_id=6)
# detail.objects.create(s_age=36,s_note='什么时候开学',s_phone=198245458,student_id=7)
# stu=detail.objects.get(id=1)#获取详细信息表id=1的学生
# print(stu.student.s_name)#正向查找
# s2=Studengt.objects.get(id=2)
# print(s2.detail);#反向查找,
#多对多的
#添加课程表的信息
# Course.objects.create(c_name='语文')
# Course.objects.create(c_name='数学')
# Course.objects.create(c_name='英语')
# Course.objects.create(c_name='体育')
# Course.objects.create(c_name='思想品德')
# Course.objects.create(c_name='历史')
#让学生选课
s1=Studengt.objects.get(s_id=1)
s2=Studengt.objects.get(s_id=2)
s3=Studengt.objects.get(s_id=3)
s4=Studengt.objects.get(s_id=4)
s5=Studengt.objects.get(s_id=5)
s6=Studengt.objects.get(s_id=6)
s7=Studengt.objects.get(s_id=7)
c1=Course.objects.get(c_id=1)
c2=Course.objects.get(c_id=2)
c3=Course.objects.get(c_id=3)
c4=Course.objects.get(c_id=4)
c5=Course.objects.get(c_id=5)
#选课增加
# c1.student.add(s1,s4,s5,s6)
# c2.student.add(s2,s4,s3,s6)
# c3.student.add(s1,s2,s7,s5)
# s2.course_set.add(c4,c5)
#查询
# print(c1.student.all())#查看选c1课程的学生
# print(s1.course_set.all())#查看s1选的课程
#删除
# s1.course_set.remove(c3)
#查询报名体育课程学生的详细信息
#student__course表示学生表与课程表联查
# rs=detail.objects.filter(student__course__c_name='体育');
# print(rs);
#查询学生名字包含三的学生的学院信息
rs=Department.objects.filter(studengt__s_name__contains='三');
print(rs);
return HttpResponse('操作成功')