# Generated by Django 3.2.12 on 2022-07-13 09:46 import time from django.db import migrations def migrate_asset_system_user_relations(apps, schema_editor): system_user_model = apps.get_model('assets', 'SystemUser') old_model = apps.get_model('assets', 'AuthBook') new_model = system_user_model.assets.through count = 0 bulk_size = 1000 print("\nStart migrate asset system user relations") while True: start = time.time() auth_books = old_model.objects.only('asset_id', 'systemuser_id')[count:count+bulk_size] auth_books = list(auth_books) count += len(auth_books) if not auth_books: break asset_system_users = [] for auth_book in auth_books: if not auth_book.asset_id or not auth_book.systemuser_id: continue asset_system_user = new_model( asset_id=auth_book.asset_id, systemuser_id=auth_book.systemuser_id ) asset_system_users.append(asset_system_user) new_model.objects.bulk_create(asset_system_users, ignore_conflicts=True) print("Create asset system user relations: {}-{} using: {:.2f}s".format( count - bulk_size, count, time.time()-start )) class Migration(migrations.Migration): dependencies = [ ('assets', '0094_alter_systemuser_assets'), ] operations = [ migrations.RunPython(migrate_asset_system_user_relations) ]