Django аннотирует поле на основе информации из другой базы данных без ORM

Я хочу аннотировать QuerySet информацией из другой таблицы базы данных

  • Модель пользователя имеет поля 'user_id' в базе данных A с ORM
  • .
  • Таблица адресов имеет поля 'user_id' и 'address' в базе данных B без ORM, т.е. доступен только raw sql.

Итак, я хотел бы сделать что-то вроде этого:

Users.objects.annotate(addr="B__address if A_user_id == B__user_id") возможно ли это вообще?


Я думаю Users.objects.annotate(addr=RawSQL('select user_id, address from B where B.user_id=A.user_id'))

Я не думаю, что это будет работать, хотя.... Может ли RawSQL работать из другой БД?

Ор,

addr_dict = {'user_id1':'addr1', 'user_id2':'addr2', ...}  # from raw sql of B

Users.objects.annotate(addr=addr_dict[usr_id])     # how can I do this?

Спасибо!

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