Een aangepaste migratie zou moeten werken.
- Je hebt al modellen A en B, dus maak model C met de gewenste velden van de twee modellen.
- Maak een normale schemamigratie, b.v. manage.py makemigrations ... en eventuele bestaande wijzigingen aanvragen
- Maak een aangepaste migratie, b.v. python manage.py makemigrations --leg je appnaam leeg (zie link gedeeld door @2ps
- Bewerk het hierboven gegenereerde bestand, ik heb hieronder een voorbeeld van een gegevensmigratie toegevoegd.
- rum manage.py migreren om de migratie van stap 4 hierboven toe te passen.
-
Laat modellen A en B vallen als dat je wens is, genereer de migratie en solliciteer en je zou goed moeten zijn.
...
def merge_models_ab(apps, schema_editor): A = apps.get_model("app_name", "A") B = apps.get_model("app_name", "B") C = apps.get_model("app_name", "C") #come up with some interesting ways to join A and B #iterate over join and insert into C #C.objects.create(...)
...
class Migrations(migrations.Migration): dependencies = [ ('app_name', 'some_prev_migrations'), ] operations = [ migrations.RunPython(merge_models_ab), ]