django - 如何通过外键以及django ORM中的多对多关系获取表的所有字段?
问题描述
我有一个表User_Device,其中包含字段username,num_of_years和device(外键),表Device具有字段id,name,type和字段property上的多对多关系,这是第三个 table Property,具有字段id,name,location。我知道如何从前 2 个表中获取所有字段:
User_Device.objects.select_related('device').all()
我也知道如何获取多对多表的所有字段:
Device.property.through.objects.all()
或过滤使用:
Device.property.through.objects.filter(property=12)
这给了我一个多对多表的所有字段,它看起来像带有字段device_id的Device_Property,property_id
我有两个问题:
我如何获取设备表和属性表的所有字段,就像当你内部加入它时 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
如何内连接所有三个表并获取所有字段,如查询结果:
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 的所有字段
解决方案
推荐阅读
- python - 编写图的 JSON 表示
- ruby-on-rails - 沉默弃用警告Rspec Rails
- swift - 通过 HTTP POST 数据时出现 Swift 4 错误
- laravel - Laravel join 和 unionAll
- javascript - 从数组创建 Html 表(使用提示)
- angular - 如何向表 td 添加新类?
- php - 从 N 长度数组中每个循环获取 2 个元素
- javascript - 防止 youtube iframe api 限制移动设备上的播放质量(分辨率)
- asp.net-core - migrationBuilder 如何确定要创建哪些索引?
- javascript - Nuxt,将 Vuex 存储拆分为单独的文件会出现错误:未知突变类型:登录