Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak połączyć dwa modele (tabele) django w jeden model (tabela)

Niestandardowe migracje powinny działać.

  1. Masz już modele A i B, więc utwórz model C z polami, które chcesz z tych dwóch modeli.
  2. Wykonaj normalną migrację schematu, np. manage.py makemigrations ... i złożyć wniosek o wszelkie istniejące zmiany
  3. Utwórz niestandardową migrację, np. python manage.py makemigrations --empty yourappname (patrz link udostępniony przez @2ps
  4. Edytuj plik wygenerowany powyżej, poniżej dodałem przykładową migrację danych.
  5. rum manage.py migrować, aby zastosować migrację z kroku 4 powyżej.
  6. Upuść modele A i B, jeśli chcesz, wygeneruj migrację i zastosuj i powinieneś być dobry.

    ...

    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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Najlepsza metoda przechowywania listy identyfikatorów użytkowników

  2. Dlaczego Railsy ignorują Rollback w (pseudo)zagnieżdżonej transakcji?

  3. Jak mogę sprawdzić poprawność składniową instrukcji (My)SQL?

  4. Dodawanie zera do tablicy, jeśli w tablicy występują puste wartości

  5. Nieprawidłowy wyjątek rzutowania został nieobsługiwany przez MySQL