设计数据库表

老师表 和 班级表 多个老师 对应 多个班级

  1. from django.db import models
  2. # Create your models here.
  3. #学生模型
  4. class Students(models.Model):
  5. sname=models.CharField(max_length=20)
  6. age=models.IntegerField()
  7. gender=models.BooleanField()
  8. cls=models.ForeignKey('Classes',on_delete=models.CASCADE)#通过cls创建学生模型与班级模型的外键关系
  9. def __str__(self):#自定义返回样式
  10. return '%s,%s,%s,%s'%(self.sname,self.age,self.gender,self.cls)
  11. class Meta:#自定义映射到数据库的表名
  12. db_table='students'
  13. #班级模型
  14. class Classes(models.Model):
  15. cname=models.CharField(max_length=50)
  16. headmaster=models.CharField(max_length=20)
  17. def __str__(self):
  18. return '%s,%s'%(self.cname,self.headmaster)
  19. class Meta:
  20. db_table='classes'
  21. # 老师模型
  22. class Teachers(models.Model):
  23. tname=models.CharField(max_length=20)
  24. age=models.IntegerField()
  25. gender=models.BooleanField()
  26. cls=models.ManyToManyField('Classes')
  27. def __str__(self):
  28. return '%s,%s,%s,%s'%(self.tname,self.age,self.gender,self.cls)
  29. class Meta:
  30. db_table='teachers'

新增

  1. # 新增基础数据 老师表数据,班级表数据
  2. models.Teachers.objects.create(
  3. tname='xxx',
  4. age=19,
  5. gender=0,
  6. )
  7. # 获取班级的对象
  8. qh_objs = models.Classes.objects.filter(headmaster='清华大学班').first()
  9. # 获取老师的对象
  10. guo = models.Teachers.objects.get(tname='郭老师')
  11. cui = models.Teachers.objects.get(tname='崔老师')
  12. # 基于对象进行新增
  13. qh_objs.teachers_set.add(*[guo,cui])
  14. # 如果已知id 基于id新增
  15. qh_objs.teachers_set.add(*[3,4])

查询

  1. # 查询老师对应的班级
  2. objs = models.Teachers.objects.filter(tname='郭老师').first().cls.all().values()
  3. objs = models.Classes.objects.filter(headmaster='清华大学班').first().teachers_set.all().values()
  4. print(objs)

删除

  1. # 获取xxx的id
  2. # obj = models.Teachers.objects.filter(tname='xxx').values().first().get('id')
  3. # 删除清华大学 和xxx的绑定关系
  4. # models.Classes.objects.filter(headmaster='清华大学班').first().teachers_set.remove(obj)
  5. # print(obj)
  6. # 获取清华大学班的id
  7. # obj = models.Classes.objects.filter(headmaster='清华大学班').values()[0].get('id')
  8. # 删除tname=xxx与清华大学班的绑定关系
  9. # models.Teachers.objects.filter(tname='xxx').first().cls.remove(obj)