Миграция данных DJango не создает и не удаляет записи - PullRequest
0 голосов
/ 18 октября 2019

У меня есть приложение, которое управляет службами как платформа.

A Customer имеет много Program s.

A Code имеет внешние ключи Customer и Program. Они оба могут быть нулевыми. (Я знаю, ужасный дизайн, я работаю над его оптимизацией)

Мне нужно создать копию каждой Code -with-program- None для каждого Program в существующем и удалитьпрежний впоследствии.

Итак, имея в виду, что в настоящее время я выполняю эту миграцию:

# Generated by Django 2.2.4 on 2019-10-17 18:29

from django.db import migrations


def code_update_program(apps, schema_editor):
    Code = apps.get_model("projects", "Code")
    Program = apps.get_model("projects", "Program")
    Customer = apps.get_model("customers", "Customer")
    db_alias = schema_editor.connection.alias

    for customer in Customer.objects.all():
        old_codes = Code.objects.using(db_alias).filter(customer=customer, program=None)
        for program in Program.objects.filter(customer=customer):
            Code.objects.using(db_alias).bulk_create(
                [
                    Code(
                        program=program,
                        customer=customer,
                        key=c.key,
                        value=c.value,
                        description=c.description,
                    )
                    for c in old_codes
                ]
            )
        old_codes.delete()


class Migration(migrations.Migration):

    dependencies = [
        ("projects", "0048_project_program_add_related_query_name"),
        ("customers", "0032_customer_plan_refactor"),
    ]

    operations = [migrations.RunPython(code_update_program)]

./manage.py migrate все сделает успешно, но когда я проверю состояние своих данных, данныевсе тот же! Так что это не работает. Любые указатели приветствуются.

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