sql >> Database >  >> RDS >> Mysql

Hoe twee django-modellen (tabellen) samen te voegen tot één model (tabel)

Een aangepaste migratie zou moeten werken.

  1. Je hebt al modellen A en B, dus maak model C met de gewenste velden van de twee modellen.
  2. Maak een normale schemamigratie, b.v. manage.py makemigrations ... en eventuele bestaande wijzigingen aanvragen
  3. Maak een aangepaste migratie, b.v. python manage.py makemigrations --leg je appnaam leeg (zie link gedeeld door @2ps
  4. Bewerk het hierboven gegenereerde bestand, ik heb hieronder een voorbeeld van een gegevensmigratie toegevoegd.
  5. rum manage.py migreren om de migratie van stap 4 hierboven toe te passen.
  6. 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),
        ]
    


  1. Postgres configureren in Grails

  2. Null-resultaten opnemen in group_concat

  3. Operator bestaat niet:geheel getal =? bij gebruik van Postgres

  4. Snelste manier om 11.000.000 unieke id's te genereren