| 12345678910111213141516171819202122232425262728293031323334 |
- # Generated by Django 5.0.6 on 2024-08-18 06:46
- import django.db.models.deletion
- from django.db import migrations, models
- def update_archiveresult_snapshot_ids(apps, schema_editor):
- ArchiveResult = apps.get_model("core", "ArchiveResult")
- Snapshot = apps.get_model("core", "Snapshot")
- num_total = ArchiveResult.objects.all().count()
- print(f' Updating {num_total} ArchiveResult.snapshot_id values in place... (may take an hour or longer for large collections...)')
- for idx, result in enumerate(ArchiveResult.objects.all().only('snapshot_old_id').iterator(chunk_size=5000)):
- assert result.snapshot_old_id
- snapshot = Snapshot.objects.only('id').get(old_id=result.snapshot_old_id)
- result.snapshot_id = snapshot.id
- result.save(update_fields=["snapshot_id"])
- assert str(result.snapshot_id) == str(snapshot.id)
- if idx % 5000 == 0:
- print(f'Migrated {idx}/{num_total} ArchiveResult objects...')
- class Migration(migrations.Migration):
- dependencies = [
- ('core', '0039_rename_snapshot_archiveresult_snapshot_old'),
- ]
- operations = [
- migrations.AddField(
- model_name='archiveresult',
- name='snapshot',
- field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='archiveresults', to='core.snapshot', to_field='id'),
- ),
- migrations.RunPython(update_archiveresult_snapshot_ids, reverse_code=migrations.RunPython.noop),
- ]
|