老师管理系统
1.创建数据库,并写入迁移
#创建教师表
class Teacher(models.Model):
#教师名
name=models.CharField(max_length=65)
#教师密码
password=models.CharField(max_length=128)
#创建学生表
class Student(models.Model):
#学生名
name = models.CharField(max_length=65)
#年龄
age = models.IntegerField()
#绑定教师
teacher=models.ManyToManyField(to='Teacher')
注:其中 #绑定教师
teacher=models.ManyToManyField(to=‘Teacher’)为多对多
2.添加学生信息是应用到了多对多,例如:
# 添加学生
def add_student(request):
if request.method == 'GET':
return render(request, 'add_student.html', locals())
if request.method == 'POST':
name = request.POST.get('name')
age = request.POST.get('age')
#存入数据库
student = models.Student()
student.name = name
student.age = age
student.save()
#多对多进行学生与教师绑定
student.teacher.add(request.session['id'])
student.save()
return render(request, 'add_student.html', locals())
、、另外删除也会用到
# 删除
def delete_student(request):
id = request.GET.get('id')
s_obj = models.Student.objects.filter(id=int(id)).first()
s_obj.teacher.remove(request.session['id'])
s_obj.save()
return redirect('/my_student/')
3.反向查询,例如:
# 展示自己的学生
def my_student(request):
#teacher__id双下划线进行反向查询
student_obj_list = models.Student.objects.filter(teacher__id=request.session['id']).all()
return render(request, 'my_student.html', locals())
4.for循环进行查询
# 未加入的学生
def no_student(request):
student_obj = models.Student.objects.all()
student_obj_list = []
for obj in student_obj:
if obj.teacher.all():
pass
else:
student_obj_list.append(obj)
return render(request, 'no_student.html', locals())
5.分页器
# 展示所有学生
def student_all(request):
if request.method == 'POST':
name = request.POST.get('name')
student_obj_list = []
student_obj_l = models.Student.objects.filter(name__icontains=name).all()
for obj in student_obj_l:
if obj.teacher.all():
pass
else:
student_obj_list.append(obj)
return render(request, 'student_all.html', locals())
#分页器
page = request.GET.get('page', 1)
student_obj_l = models.Student.objects.all()
pageinator = Paginator(student_obj_l, 3)
student_obj_list = pageinator.page(page)
page_range = pageinator.page_range
return render(request, 'student_all.html', locals())
6.搜索
if request.method == 'POST':
name = request.POST.get('name')
student_obj_list = []
student_obj_l = models.Student.objects.filter(name__icontains=name).all()
for obj in student_obj_l:
if obj.teacher.all():
pass
else:
student_obj_list.append(obj)
return render(request, 'student_all.html', locals())
7.正序倒叙排列
#在可以进行排序的列表里的指定位置加入例如:order_by(-age)
order_by