post_syncdb
シグナルを使用して、テーブルが作成されるとすぐにデータベースにデータを追加しようとしています。
signals.post_syncdb.connect(init)
次にinit関数でパーミッションを設定したいので、
ct = ContentType.objects.get(app_label='news', model='Article')
Permission(name='Approve articles', codename='can_approve_article', content_type=ct)
しかし、すべてのテーブルを削除して実行するsyncdb
と、
...
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.
私が行ったいくつかのテスト:
- このコードを外部で試してみるとうまくいきます
syncdb
。 - このコードを使用せ
syncdb
ずにすべてのテーブルを作成し、このコードを追加して syncdb を変更せずに実行しても、問題なく動作します。 - そして、以前は機能していたと確信していますが、それ以来、他の場所で多くのことを変更したため、どこから始めればよいかわかりません。
- 別のアプリの他のモデルでも同じエラーが発生します。
- シグナルは約 10 回発生し、最初の数回だけエラーがスローされます。
ヒントをありがとう!