以班级,学生举例子 一个学生对应一个班级,一个班级可以对应多个学生
models 设计表
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'
增加
方式一
# 方法一:直接对底层数据库进行赋值# obj = models.Students.objects.create(sname='张三',age='19',gender=1,cls_id=1)# 方法二 设置学生表模型的cls属性今等于引用的模型实例# res_obj = models.Classes.objects.get(id=1)# # print(res_obj)# obj = models.Students.objects.create(sname='张三',age='20',gender=0,cls=res_obj)
方式二
# school_obj = models.Classes.objects.create(cname='高三',headmaster='张老师')# school_obj = models.Classes.objects.create(cname='高二',headmaster='李老师')# school_obj = models.Classes.objects.create(cname='高三',headmaster='王老师')# zhang_obj = models.Classes.objects.get(cname='高三')# wang_obj = models.Classes.objects.get(cname='高二')# li_obj = models.Classes.objects.get(cname='高一')## models.Students.objects.create(sname='张三',age='19',gender=1,cls=zhang_obj)# models.Students.objects.create(sname='李四',age='19',gender=1,cls=zhang_obj)# models.Students.objects.create(sname='王五',age='19',gender=1,cls=zhang_obj)## models.Students.objects.create(sname='小明',age='19',gender=1,cls=wang_obj)# models.Students.objects.create(sname='小王',age='19',gender=1,cls=wang_obj)# models.Students.objects.create(sname='小张',age='19',gender=1,cls=wang_obj)### models.Students.objects.create(sname='大明',age='19',gender=1,cls=li_obj)# models.Students.objects.create(sname='大王',age='19',gender=1,cls=li_obj)# models.Students.objects.create(sname='大大',age='19',gender=1,cls=li_obj)
删除
方式一
# obj = models.Students.objects.get(id=2).delete()# print(obj)# obj = models.Classes.objects.get(id=1).delete() # 删除校长为1的id下关联的学生也都会删除# print(obj)
方式二
obj = models.Students.objects.filter(sname='ad').values().first()if obj:models.Students.objects.filter(id=obj.get('id')).delete()
方式三
obj = models.Students.objects.filter(sname='aa').delete()
更新
# obj = models.Students.objects.filter(id=11).update(# sname='大山',# )
