Как получить все поля таблиц, связанные через внешний ключ, а также отношения многие ко многим в django ORM? - PullRequest
0 голосов
/ 20 марта 2020

У меня есть таблица User_Device с полями имя пользователя , num_of_years и устройство (внешний ключ), таблица Устройство с полями id , имя , тип и отношение многие ко многим в поле свойство , которое является третья таблица Свойство с полями id , name , location . Я знаю, как получить все поля из первых двух таблиц:

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

Я также знаю, как получить все поля таблицы «многие ко многим»:

Device.property.through.objects.all()

или фильтр используя:

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

, что дает мне все поля таблицы «многие ко многим», которая выглядит как Device_Property с полями device_id , property_id

У меня есть 2 вопроса:

  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

...