Vlastní migrace by měla fungovat.
- Modely A a B již máte, takže vytvořte model C s požadovanými poli z těchto dvou modelů.
- Proveďte běžnou migraci schématu, např. manage.py makemigrations ... a požádat o jakékoli stávající změny
- Vytvořte vlastní migraci, např. python manage.py makemigrations --vyprázdněte název aplikace (viz odkaz sdílený @2ps
- Upravte výše vygenerovaný soubor, níže jsem přidal ukázkovou migraci dat.
- rum manage.py migrate, abyste použili migraci z kroku 4 výše.
-
Zahoďte modely A a B, pokud si to přejete, vygenerujte migraci a požádejte o to, měli byste být dobří.
...
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), ]