2018-09-08-Python全栈开发day52-django-orm多表操作

1.一对多

  设置外键

  

pub=models.ForeignKey('Publish',on_delete=models.CASCADE)

pub为设置外键的名称,
Publish为关联的表
on_delete为django2.0之后多的填的内容,
CASCADE:此值设置,是级联删除。
PROTECT:此值设置,是会报完整性错误。
SET_NULL:此值设置,会把外键设置为null,前提是允许为null。
SET_DEFAULT:此值设置,会把设置为外键的默认值。
SET():此值设置,会调用外面的值,可以是一个函数。

设置完外键之后,在子表中会生成一个pub_id来与主表的id来进行关联

  添加对应关系

  

    b=Book.objects.create(name='java',price=18,pub_date='2017-12-31',pub_id=2)

这种方式可以直接添加带有对应关系的数据
b=Publish.objects.filter(id=2)[0]
    Book.objects.create(name='C',price=1000,pub_date='2017-12-12',pub=b)


先从主表中获取一行的数据,相当于进行选择,
然后在字表中创建字段的时候,使用外键名称pub来等于这个主表的字段

  

  双下划线查询

  使用双下划线来跨表进行查询

  可以从filter进行跨表,也可以在values中跨表

猜你喜欢

转载自www.cnblogs.com/hai125698/p/9609650.html