I am trying to add add some data to the database as soon as tables are created, using the post_syncdb
signal.
signals.post_syncdb.connect(init)
Then in the init function, I want to set permission, so I use
ct = ContentType.objects.get(app_label='news', model='Article')
Permission(name='Approve articles', codename='can_approve_article', content_type=ct)
But if I drop all the tables and run syncdb
, I get
...
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.
Some tests I have done:
syncdb
.syncdb
create all the tables without this code, and then add this code and run syncdb without it having to make any changes.Thanks a lot for any hints!
Add this to the beginning of your init function:
from django.contrib.contenttypes.management import update_all_contenttypes
update_all_contenttypes() # make sure all content types exist