设计数据库表
老师表 和 班级表 多个老师 对应 多个班级
from django.db import models
# Create your models here.
#学生模型
class Students(models.Model):
sname=models.CharField(max_length=20)
age=models.IntegerField()
gender=models.BooleanField()
cls=models.ForeignKey('Classes',on_delete=models.CASCADE)#通过cls创建学生模型与班级模型的外键关系
def __str__(self):#自定义返回样式
return '%s,%s,%s,%s'%(self.sname,self.age,self.gender,self.cls)
class Meta:#自定义映射到数据库的表名
db_table='students'
#班级模型
class Classes(models.Model):
cname=models.CharField(max_length=50)
headmaster=models.CharField(max_length=20)
def __str__(self):
return '%s,%s'%(self.cname,self.headmaster)
class Meta:
db_table='classes'
# 老师模型
class Teachers(models.Model):
tname=models.CharField(max_length=20)
age=models.IntegerField()
gender=models.BooleanField()
cls=models.ManyToManyField('Classes')
def __str__(self):
return '%s,%s,%s,%s'%(self.tname,self.age,self.gender,self.cls)
class Meta:
db_table='teachers'
新增
# 新增基础数据 老师表数据,班级表数据
models.Teachers.objects.create(
tname='xxx',
age=19,
gender=0,
)
# 获取班级的对象
qh_objs = models.Classes.objects.filter(headmaster='清华大学班').first()
# 获取老师的对象
guo = models.Teachers.objects.get(tname='郭老师')
cui = models.Teachers.objects.get(tname='崔老师')
# 基于对象进行新增
qh_objs.teachers_set.add(*[guo,cui])
# 如果已知id 基于id新增
qh_objs.teachers_set.add(*[3,4])
查询
# 查询老师对应的班级
objs = models.Teachers.objects.filter(tname='郭老师').first().cls.all().values()
objs = models.Classes.objects.filter(headmaster='清华大学班').first().teachers_set.all().values()
print(objs)
删除
# 获取xxx的id
# obj = models.Teachers.objects.filter(tname='xxx').values().first().get('id')
# 删除清华大学 和xxx的绑定关系
# models.Classes.objects.filter(headmaster='清华大学班').first().teachers_set.remove(obj)
# print(obj)
# 获取清华大学班的id
# obj = models.Classes.objects.filter(headmaster='清华大学班').values()[0].get('id')
# 删除tname=xxx与清华大学班的绑定关系
# models.Teachers.objects.filter(tname='xxx').first().cls.remove(obj)