Может ли Django выполнить ОБНОВЛЕНИЕ ВНУТРЕННЕГО СОЕДИНЕНИЯ, что означает обновление одной модели из другой на основе соответствующего поля, например ID - PullRequest
0 голосов
/ 15 апреля 2020

Возможно в Django сделать так называемое ОБНОВЛЕНИЕ ВНУТРЕННЕГО СОЕДИНЕНИЯ, что означает обновление одной таблицы из другой на основе соответствующего поля, например, ID.

Чтобы получить больше контекста, в PostgreSQL вы бы достигли этого с помощью запроса, например:

UPDATE users
SET name = R.name,
FROM renamed_users R
WHERE users.id = renamed_users.id;

Ref: https://www.postgresqltutorial.com/postgresql-update/

1 Ответ

0 голосов
/ 15 апреля 2020

Вторая версия ответа после @ ovimunt комментарий

from django.db.models import Subquery, OuterRef, F

users.objects.filter(
    users__id__in = renamed_users.objects.values('id')
).annotate(
    new_name = Subquery(
        renamed_users.objects.filter(id = OuterRef('id')).values('name')[:1]
    )
).update(name = F('new_name'))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...