У меня есть приложение, которое управляет службами как платформа.
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
все сделает успешно, но когда я проверю состояние своих данных, данныевсе тот же! Так что это не работает. Любые указатели приветствуются.