我嘗試使用post_syncdb
信號在創建表後立即添加一些數據到數據庫。post_syncdb上不存在ContentType匹配查詢
signals.post_syncdb.connect(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次,只有前幾次拋出錯誤。
非常感謝任何提示!
的「解決方案」現在趕上DoesNotExist異常並通過。在稍後的一次信號被觸發時,內容類型可以被確定並且事情可以工作。它可以工作,但如果有人有一個更漂亮的解決方案,我仍然很好奇。 – Mark 2012-07-26 16:04:35