sql >> Database teknologi >  >> RDS >> Mysql

Sådan flettes to django-modeller (tabeller) til én model (tabel)

En tilpasset migrering burde fungere.

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


  1. Avanceret SQL:CROSS APPLY og OUTER APPLY

  2. Sådan automatiseres databasefailover med ClusterControl

  3. Omdøb outfil med dato i mysql

  4. MySQL-strengfunktioner (fuld liste)