首页 > 解决方案 > 如何通过外键以及django ORM中的多对多关系获取表的所有字段?

问题描述

我有一个表User_Device,其中包含字段usernamenum_of_yearsdevice(外键),表Device具有字段idnametype和字段property上的多对多关系,这是第三个 table Property,具有字段idnamelocation。我知道如何从前 2 个表中获取所有字段:

User_Device.objects.select_related('device').all()

我也知道如何获取多对多表的所有字段:

Device.property.through.objects.all()

或过滤使用:

Device.property.through.objects.filter(property=12)

这给了我一个多对多表的所有字段,它看起来像带有字段device_id的Device_Propertyproperty_id

我有两个问题:

  1. 我如何获取设备表和属性表的所有字段,就像当你内部加入它时 SQL 查询会给出的那样: select d.*,p.* from device_property dp inner join property p on dp.property_id=p.id inner join device d on dp.device_id=d.id

  2. 如何内连接所有三个表并获取所有字段,如查询结果:

    select ud.*,d.*,p.* from user_device ud inner join device_property dp on ud.device_id = dp.device_id inner join property p on dp.property_id=p.id inner join device d on dp.device_id=d.id

总之,表 A 在表 B 上有一个外键字段,表 B 与表 C 具有多对多关系(不是外键)。如何获取表 A、B、C 的所有字段

标签: djangoormforeign-keysmany-to-manydjango-select-related

解决方案


推荐阅读