En anpassad migrering borde fungera.
- Du har redan modellerna A och B, så skapa modell C med de fält du vill ha från de två modellerna.
- Gör en normal schemamigrering, t.ex. manage.py makemigrations ... och ansöka om befintliga ändringar
- Skapa en anpassad migrering, t.ex. python manage.py makemigrations --töm ditt appnamn (se länk som delas av @2ps
- Redigera filen som skapats ovan, jag har lagt till ett exempel på datamigrering nedan.
- rum manage.py migrera för att tillämpa migreringen från steg 4 ovan.
-
Släpp modell A och B om det är din önskan, generera migreringen och ansök så borde du vara bra.
...
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), ]