Für post_syncdb ist keine ContentType-Übereinstimmungsabfrage vorhanden

Ich versuche, der Datenbank einige Daten hinzuzufügen, sobald Tabellen erstellt werdenpost_syncdb Signal.

signals.post_syncdb.connect(init)

Dann möchte ich in der Init-Funktion die Berechtigung setzen, also benutze ich

ct = ContentType.objects.get(app_label='news', model='Article')
Permission(name='Approve articles', codename='can_approve_article', content_type=ct)

Aber wenn ich alle Tische fallen lasse und rennesyncdb, Ich bekomme

...
File "...\base\functions\init.py", line 11, in init
  ct = ContentType.objects.get(app_label='news', model='Article')
...
django.contrib.contenttypes.models.DoesNotExist: ContentType matching query does not exist.

Einige Tests, die ich gemacht habe:

Es funktioniert gut, wenn ich diesen Code außerhalb probieresyncdb.Es funktioniert auch gut, wenn ich lassesyncdb Erstellen Sie alle Tabellen ohne diesen Code, fügen Sie diesen Code hinzu und führen Sie syncdb aus, ohne dass Änderungen vorgenommen werden müssen.Ich bin mir ziemlich sicher, dass es funktioniert hat, aber seitdem habe ich viele Dinge an anderen Orten geändert, sodass ich nicht weiß, wo ich anfangen soll.Ich erhalte den gleichen Fehler für andere Modelle in verschiedenen Apps.Das Signal wird ungefähr 10 Mal abgefeuert, nur die ersten Male werfen den Fehler.

Vielen Dank für alle Hinweise!

Antworten auf die Frage(1)

Ihre Antwort auf die Frage