Migrasi khusus akan berfungsi.
- Anda sudah memiliki model A dan B, jadi buat model C dengan kolom yang Anda inginkan dari kedua model tersebut.
- Buat migrasi skema normal mis. manage.py makemigrations ... dan ajukan perubahan yang ada
- Buat migrasi khusus, mis. python manage.py makemigrations --empty yourappname (lihat tautan yang dibagikan oleh @2ps
- Edit file yang dihasilkan di atas, saya telah menambahkan contoh migrasi data di bawah.
- rum manage.py migration untuk menerapkan migrasi dari langkah 4 di atas.
-
Jatuhkan model A dan B jika itu keinginan Anda, buat migrasi dan terapkan dan Anda akan menjadi baik.
...
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), ]