Преобразование набора запросов SQL в набор запросов модели Django
Мне нужна небольшая помощь, я пришел из работы с реляционными моделями данных и теперь я решился на Django Framework, мне нужно сделать API, который возвращает что-то вроде этого SQL запроса
SELECT user_profile_userprofile.email,
user_profile_userprofile.name,
business_unity.active AS status,
profile.name AS profile,
business_unity.name AS unit
FROM user_profile_userprofile
JOIN profile ON user_profile_userprofile.id = profile.id
JOIN user_profile_unity ON user_profile_unity.user_id = user_profile_userprofile.id
JOIN business_unity ON user_profile_unity.id = business_unity.id;
Модели уже созданы, но я не знаю, как сделать представление в python, которое удовлетворяет условиям этого запроса
По сути, вам нужно "предварительно загрузить" ассоциации с помощью select_related, а затем вы просто используете обычные методы для навигации по ним.
Предположим, что ваши модели имеют вид
class UserProfile(Model):
profile = ForeignKey("Profiles", ...)
unity = ForeignKey("Unity", ...)
class Unity(Model):
business_unity = ForeignKey("business.Unity", ...)
qs = UserProfile.select_related("profile", "unity__business_unity").all()
up = qs[0]
Теперь у вас загружены все данные (и даже больше)
print(up.email)
print(up.name)
print(up.unity.business_unity.active)
print(up.profile.name)
print(up.unity.business_unity.name)