外键介绍,manytomany介绍,filter跨表双下划线

# Create your models here.
class Classes(models.Model):#班级表
    title=models.CharField(max_length=32)
    m=models.ManyToManyField('Teacheres')#加上引号,全执行完后才来执行,表的多对多

class Teacheres(models.Model):#教师表
    name=models.CharField(max_length=32)
#obj=Teacheres(name='雄安房')
#obj.save()
class Student(models.Model):
    username=models.CharField(max_length=32)
    age=models.IntegerField()
    #gender=models.BooleanField()布尔值
    gender = models.NullBooleanField()#可以为空的布尔值
    cs=models.ForeignKey(Classes)#这个classes不用加引号,因为在上面,顺序执行,

cs存的就是cs_id是一条另一张表的完整的记录
# 外键存放的另一张表的记录一组一组的id和title
#filter 跨表filter(cs__name
=cname)双下划线
all()拿到的也是很多记录 用for 拿某一条记录
【】列表,()元祖{}字典
obj=classes.objects.filter(id=1).first()
obj.m.add[2,3]m是manytomany的,若没有,会新建一张教师表
id 班级id 教师id
1  1  2
2  1  3
.m.remove()
.m.clear()
.m.set()

1类代表数据库的表,
2类的对象代表表的一行记录
3外键代表另一张表的一行记录
4 manytomany,会默认自动生成第三张表teacher,然后通过本表对第三张表操作

5 stu_list=Student.objects.all()相当于select *from
for row in stu_list:
row.cs_id,
6 stu=Student.objects.all().values('username','id')相当于select username,id from

7拿另一张表
Student.objects.filter(cs__title='科技班').all()filter里双下划线跨表拿class表科技班所有学生

 

posted @ 2018-08-08 17:38  未来的技术  阅读(339)  评论(0编辑  收藏  举报