以班级,学生举例子 一个学生对应一个班级,一个班级可以对应多个学生

models 设计表

  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'

增加

  • 方式一

    1. # 方法一:直接对底层数据库进行赋值
    2. # obj = models.Students.objects.create(sname='张三',age='19',gender=1,cls_id=1)
    3. # 方法二 设置学生表模型的cls属性今等于引用的模型实例
    4. # res_obj = models.Classes.objects.get(id=1)
    5. # # print(res_obj)
    6. # obj = models.Students.objects.create(sname='张三',age='20',gender=0,cls=res_obj)
  • 方式二

    1. # school_obj = models.Classes.objects.create(cname='高三',headmaster='张老师')
    2. # school_obj = models.Classes.objects.create(cname='高二',headmaster='李老师')
    3. # school_obj = models.Classes.objects.create(cname='高三',headmaster='王老师')
    4. # zhang_obj = models.Classes.objects.get(cname='高三')
    5. # wang_obj = models.Classes.objects.get(cname='高二')
    6. # li_obj = models.Classes.objects.get(cname='高一')
    7. #
    8. # models.Students.objects.create(sname='张三',age='19',gender=1,cls=zhang_obj)
    9. # models.Students.objects.create(sname='李四',age='19',gender=1,cls=zhang_obj)
    10. # models.Students.objects.create(sname='王五',age='19',gender=1,cls=zhang_obj)
    11. #
    12. # models.Students.objects.create(sname='小明',age='19',gender=1,cls=wang_obj)
    13. # models.Students.objects.create(sname='小王',age='19',gender=1,cls=wang_obj)
    14. # models.Students.objects.create(sname='小张',age='19',gender=1,cls=wang_obj)
    15. #
    16. #
    17. # models.Students.objects.create(sname='大明',age='19',gender=1,cls=li_obj)
    18. # models.Students.objects.create(sname='大王',age='19',gender=1,cls=li_obj)
    19. # models.Students.objects.create(sname='大大',age='19',gender=1,cls=li_obj)

    删除

  • 方式一

    1. # obj = models.Students.objects.get(id=2).delete()
    2. # print(obj)
    3. # obj = models.Classes.objects.get(id=1).delete() # 删除校长为1的id下关联的学生也都会删除
    4. # print(obj)
  • 方式二

    1. obj = models.Students.objects.filter(sname='ad').values().first()
    2. if obj:
    3. models.Students.objects.filter(id=obj.get('id')).delete()
  • 方式三

    1. obj = models.Students.objects.filter(sname='aa').delete()

    更新

    1. # obj = models.Students.objects.filter(id=11).update(
    2. # sname='大山',
    3. # )