En tilpasset migrering burde fungere.
- Du har allerede model A og B, så opret model C med de felter, du ønsker fra de to modeller.
- Foretag en normal skemamigrering, f.eks. manage.py makemigrations ... og ansøg om eventuelle eksisterende ændringer
- Opret en tilpasset migrering, f.eks. python manage.py makemigrations --tøm dit appnavn (se link delt af @2ps
- Rediger filen, der er genereret ovenfor. Jeg har tilføjet et eksempel på datamigrering nedenfor.
- rum manage.py migrér for at anvende migreringen fra trin 4 ovenfor.
-
Drop model A og B, hvis det er dit ønske, generer migreringen og ansøg, og du burde være god.
...
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), ]