我正在使用this question中描述的方法为我的django项目加载初始用户。
这样可以保存用户权限,其中一个权限记录可能如下所示:
{
"pk": 56,
"model": "auth.permission",
"fields": {
"codename": "change_somemodel",
"name": "Can change some model",
"content_type": 19
}
用户记录:
{
"pk": 2,
"model": "auth.user",
"fields": {
"username": "some_user",
"first_name": "",
"last_name": "",
"is_active": true,
"is_superuser": false,
"is_staff": true,
"last_login": "2011-09-20 06:36:54",
"groups": [],
"user_permissions": [
10,
11,
19,
20,
21,
1,
2,
56,
...,
],
"password": "sha1$e4f29$fcec7f8bb930d98abdaaa3c0020220f413c4c1f5",
"email": "",
"date_joined": "2011-03-15 06:01:41"
}
在将来的安装中是否有可能更改内容类型外键?如果添加模型或应用程序怎么样?例如,假设我在我的核心应用程序中添加了一个模型,然后我在settings.py中列出了一些可重复使用的应用程序,在新安装中会有不同的content_type_id吗?我可以在我的初始数据中包含content_type表,还是可能导致其他问题?
如果这不是将多个初始用户加载到数据库中的可靠方法,还有哪些替代方法?
答案 0 :(得分:7)
检查Natural Keys
。使用-n w / dumpdata,如./manage.py dumpdata -n auth.User
答案 1 :(得分:7)
实际上,您可能还必须排除contenttypes才能使其正常工作。此外,如果您有任何用户或组数据,则还需要转储这些数据。有关排除contenttypes的详细信息,请参阅此thread。
对于我的应用程序,我必须使用以下命令进行loaddata或test以使用manage.py dumpdata生成的fixture。另外,你应该使用--indent N选项来确保你得到一个人类可读的文件(其中N是缩进的空格数)
./manage.py dumpdata -n --indent 4 -e contenttypes appName auth.Group auth.User > initial_data.json