У меня есть таблица БД UserSite с пользователем, сайтом и группой. Сайт от пользователя и может быть помещен в одну группу. Теперь я хочу, чтобы пользователь мог добавить сайт в несколько групп. Для этого я создал новую таблицу БД UserSiteGroups для обработки отношения многие ко многим. Поэтому мне нужно перенести все ключи группы из старой таблицы UserSite в новую таблицу UserSiteGroups.
Я хочу сделать это с помощью сценария миграции. Я уже сделал миграцию для создания новой таблицы базы данных UserSiteGroups с пользователем, сайтом и группой. Теперь мне просто нужно скопировать значения. Он должен сделать что-то вроде этого:
- получить группу пользователей (из старой таблицы)
- обновить группу пользователей, где user & site ==
I ' читаю о том, как делать это с помощью F () Потому что есть какие-то вопросы, которые я не знаю, как начать, кто-нибудь? Это то, что я получил сейчас ..
from django.db import migrations, models
import django.db.models.deletion
from django.apps import apps
from django.db.models import F
def migrate_groups_data():
UserSiteGroup = apps.get_model("site", "UserSiteGroup")
UserSiteGroup.objects.all().update(group=F("groups"))
class Migration(migrations.Migration):
dependencies = [("site", "0021_uusg")]
operations = [
migrations.RunPython(migrate_groups_data),
]
Проблема, которую я получил, состоит в том, что группы в выражении F должны быть группой, соответствующей указанному c пользователю & сайту из старой таблицы. Как мне получить это наиболее эффективным?