1.多对一关系
1.1 多对一的关系是什么?
一个班级,一个班级里有好多学生,就像表里的外键一样
class Major(models.Model):
major_name = models.CharField(max_length=20,verbose_name='专业名称')
class Meta:
verbose_name = '专业表'
verbose_name_plural = verbose_name
db_table = 'major'
def __str__(self):
return self.major_name
class Student(models.Model):
stu_name = models.CharField(max_length=20,verbose_name='学生姓名')
score = models.IntegerField(verbose_name='成绩')
sex = models.CharField(max_length=2,verbose_name='性别')
major = models.ForeignKey(Major,on_delete=models.CASCADE,verbose_name='专业编号')
class Meta:
verbose_name = '学生表'
verbose_name_plural = verbose_name
db_table = 'student'
def __str__(self):
return self.stu_name
1.2 多对一的增删改操作
增加
def post(self,request):
name = request.POST.get('name')
score = request.POST.get('score')
sex = request.POST.get('sex')
major = request.POST.get('major')
try:
Student.objects.create(
stu_name = name,
score = score,
sex = sex,
major_id = major
)
except Exception as e:
print(e)
return HttpResponse('添加失败')
return redirect('/major/')
删除
class DeleteView(View):
def get(self,request,id):
Student.objects.filter(id=id).delete()
return redirect('/major/')
修改
class UpdateView(View):
def get(self,request,id):
try:
stud_data = Student.objects.get(id=id)
except Exception as e:
print(e)
return HttpResponse('获取数据失败')
return render(request,'update.html',{'stus':stud_data})
def post(self,request,id):
name = request.POST.get('name')
score = request.POST.get('score')
sex = request.POST.get('sex')
major = request.POST.get('major')
try:
Student.objects.filter(id=id).update(
stu_name=name,
score=score,
sex=sex,
major=major
)
except Exception as e:
print(e)
return HttpResponse('添加失败')
return redirect('/major/')