Dopasowanie zapytania ContentType nie istnieje w post_syncdb
Próbuję dodać kilka danych do bazy danych, gdy tylko zostaną utworzone tabele, używającpost_syncdb
sygnał.
signals.post_syncdb.connect(init)
Następnie w funkcji init chcę ustawić uprawnienia, więc używam
ct = ContentType.objects.get(app_label='news', model='Article')
Permission(name='Approve articles', codename='can_approve_article', content_type=ct)
Ale jeśli upuszczę wszystkie stoły i ucieknęsyncdb
, Dostaję
...
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.
Kilka testów, które zrobiłem:
Działa dobrze, jeśli wypróbuję ten kod na zewnątrzsyncdb
.Działa również dobrze, jeśli pozwolęsyncdb
utwórz wszystkie tabele bez tego kodu, a następnie dodaj ten kod i uruchom syncdb bez konieczności wprowadzania jakichkolwiek zmian.I jestem całkiem pewien, że kiedyś działało, ale od tego czasu zmieniłem wiele rzeczy w innych miejscach, więc nie wiem od czego zacząć.Otrzymuję ten sam błąd dla innych modeli w różnych aplikacjach.Sygnał jest wystrzelony około 10 razy, tylko kilka pierwszych razy wyrzuca błąd.Wielkie dzięki za wszelkie wskazówki!