Перенести столбцы базы данных с помощью F () в Django - PullRequest
0 голосов
/ 12 февраля 2020

У меня есть таблица БД 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 пользователю & сайту из старой таблицы. Как мне получить это наиболее эффективным?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...