Django queryset select all from multiple tables

Я хочу выбрать все столбцы из объединения нескольких таблиц, используя django queryset, соответствующий следующему sql

select user.*, address.*, contact.* from user left join address on user.id = address.userid left join contact on user.id = contact.userid

У меня есть следующий python
User.objects.values() для получения всех данных пользователя.
User.objects.values(first_name, last_name, contacts__number, addresses__zip) для получения определенных столбцов

Но я не знаю, как получить все столбцы из всех 3 таблиц, что-то вроде

User.objects.values(*, contacts__*, addressess__*)

Если вы определили отношения ForeignKey на классе User, вы можете использовать:

users = User.objects.select_related("Address", "Contact").all()

Затем вы можете получить доступ к связанному объекту на объекте User в качестве атрибута:

for user in users:
    print(user.address)
    print(user.contact)

На самом деле, подсказка select_related() не нужна, и вы можете получить доступ к связанной записи как к атрибуту в любом случае, она просто предотвращает отдельный запрос к базе данных для каждого доступа.

Если вы используете модель User в приложении Django auth, вы можете пойти одним из этих путей для достижения вашей цели:

Надеюсь, это решит вашу проблему.

Вернуться на верх