以班级,学生举例子 一个学生对应一个班级,一个班级可以对应多个学生
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='大山',
# )