Warum fragt Django, dass Inhaltstypen abgestanden sind und gelöscht werden müssen

Ich habe alles gefunden:

Können veraltete Inhaltstypen automatisch in Django gelöscht werden?

Löschen von unbenutzten Modellen, veraltete Inhaltstypen werden aufgefordert

InvalidBasesError: Grundlagen für [<ModelState: 'users.GroupProxy'> können nicht aufgelöst werden

Django-Bachstelze CMS-Migration: Kann nicht Basen für [<ModelState: 'app.CustomPage'> auflösen

Django migrieren mit Zinnia- InvalidBasesError: Kann nicht Basen für [<ModelState: 'zinnia.Author'>

Also hier ist mein Problem: Ich habe:

  • Ein ComicBook , das eine viele-zu-viele Planche
  • Eine Planche , die eine viele bis viele Bande
  • Ein Bande , das eine viele-zu-viele Vignette
  • … und drei Ebenen tiefer (es ist nicht wichtig, dass es immer das gleiche Prinzip ist)

Ich brauchte zwischen vielen und vielen Tischen, um " importance " Feld hinzufügen, um in der Lage sein, eine benutzerdefinierte Art der Beziehungen zu machen. Also habe ich geschaffen

  • Ein ComicBookPlanche , das ist die viele-to-viele Tabelle mit Feld importance
  • Ein PlancheBande , das ist die viele-to-many-Tabelle mit Feld importance

Alles funktionierte perfekt, bis ich mich entschlossen habe, ComicBook zum Book umzubenennen. Von nun an bekomme ich immer die Nachricht django.db.migrations.state.InvalidBasesError: Cannot resolve bases for...

Ich habe sogar versucht, alle Tische und Migrationsordner zu löschen , nichts verändert … Ich habe versucht, meine Bewerbung zu kommentieren -> toll dann unkommentiert und noch:

 django.db.migrations.state.InvalidBasesError: Cannot resolve bases for [<ModelState: 'main.TexteLongTextesThrough'>, <ModelState: 'main.TexteCourtTextesThrough'>, <ModelState: 'main.VignetteBullesThrough'>, <ModelState: 'main.LivrePlanchesThrough'>] 

Ich werde sauer. Also hier ist was ich tat:

  • Brandneue Anwendung
  • makemigrations dann migrate -> auth, admin, Sessions, Websites erstellt kein Problem
  • models.py / models.py meine models.py ohne admin.py .

makemigrations -> perfekt:

 Migrations for 'main': 0001_initial.py: - Create model Bande - Create model BandeVignette - Create model Bulle - Create model ContenuCourt - Create model ContenuLong - Create model Langue - Create model Livre - Create model Personne - Create model Planche - Create model PlancheBande - Create model TexteCourt - Create model TexteLong - Create model Vignette - Add field description to planche - Add field planches to livre 

Dann migrate -> perfekt:

 Operations to perform: Synchronize unmigrated apps: staticfiles, messages Apply all migrations: sessions, admin, sites, auth, contenttypes, main Synchronizing apps without migrations: Creating tables... Running deferred SQL... Installing custom SQL... Running migrations: Rendering model states... DONE Applying main.0001_initial... OK Process finished with exit code 0 

Dann kopiere / admin.py meine admin.py dann makemigrations -> perfekt:

 Migrations for 'main': 0002_livreplanchesthrough_textecourttextesthrough_textelongtextesthrough_vignettebullesthrough.py: - Create proxy model LivrePlanchesThrough - Create proxy model TexteCourtTextesThrough - Create proxy model TexteLongTextesThrough - Create proxy model VignetteBullesThrough Process finished with exit code 0 

Dann jedes Mal, wenn ich versuche zu migrate , fragt es mich das, egal ob ich anwser "ja" oder "nein":

 >>> migrate Operations to perform: Synchronize unmigrated apps: staticfiles, messages Apply all migrations: sessions, admin, sites, auth, contenttypes, main Synchronizing apps without migrations: Creating tables... Running deferred SQL... Installing custom SQL... Running migrations: No migrations to apply. The following content types are stale and need to be deleted: main | textelong_textes main | textecourt_textes main | livre_planches main | vignette_bulles Any objects related to these content types by a foreign key will also be deleted. Are you sure you want to delete these content types? If you're unsure, answer 'no'. Type 'yes' to continue, or 'no' to cancel: yes Process finished with exit code 0 

Was kann ich tun, damit er aufhört zu fragen, und was ist das Problem?

One Solution collect form web for “Warum fragt Django, dass Inhaltstypen abgestanden sind und gelöscht werden müssen”

Ein paar Dinge hier: Es sieht so aus, als hätten Sie die Modelle in einer Reihe von Migrationen erstellt und dann die Durchgangs-Tabellen in einer zweiten Charge von Migrationen erstellt. Das ist falsch, man sollte die durchgeführten Tabellen schreiben und zur gleichen Zeit der Hauptmodelle migrieren.

Was passiert in der letzten Beispiel ist, dass, wenn Sie zum ersten Mal die Modelle, Django ging und erstellt es ist ein eigener Standard durch Tabellen, dann gingst du und benutzte benutzerdefinierte durch Tabellen, so django bittet Sie, die ursprünglichen (alten) zu löschen.

Wie du alles admin.py hast, sieht es so aus, als hättest du die Modelldefinitionen für die admin.py in admin.py ? Warum würdest du das tun? Sie sollten in models.py direkt neben den Modellen sind sie "verbinden".

Auch sollten Sie nicht mit einem Proxy Modell, und ohne den eigentlichen Quellcode, das kann sehr gut die Ursache für Ihr Problem sein. Wenn alles, was du zu tun versuchst, ein zusätzliches Feld auf der durchgehenden Beziehung hat, solltest du dem Muster folgendes folgen: https://docs.djangoproject.com/de/1.8/topics/db/models/#extra-fields- Auf-viele-zu-viele-Beziehungen

Python ist die beste Programmiersprache der Welt.