我正在构建一个应用程序,假定其工作流程存在某些组和权限。例如,“成员”可以登录应用程序并查看和编辑他们的个人数据,但无法看到通常会在同一屏幕上显示的注释。 “员工”可以查看这些笔记并创建或编辑自己的笔记,但只有“会员管理员”才能删除或编辑任何人的笔记。
我的问题是引导此应用的数据。我可以为组创建JSON fixture数据,但是我必须对PK进行硬编码,这看起来像是不好的做法(如果我想使用的第三方应用程序做同样的事情并且存在冲突会怎么样?)更大问题是权限 - 我必须将PK添加到权限,而权限反过来会将PK添加到其内容类型。
我已经阅读过使用post_syncdb钩子以更加编程的方式添加初始数据,我希望这将有助于我解决硬编码的PK问题。但我想知道这是否是这个问题的最佳解决方案,或者我是否“滥用”Django组和权限概念,在这里,应该做其他事情,比如创建新模型或只是放置标志(如“ is_member_manager“)在我的用户档案模型等
上答案 0 :(得分:0)
通常使用管理命令init
创建名为initialize
的应用程序,我将所有代码放在引导程序中。这允许您:
init
应用程序配置(首次安装)后安装的应用程序或
Group.objects.all().exists()
?)(或两者)
我发现这个解决方案非常容易维护,并且对任何情况都足够强大。
post_syncdb
(djang 1.7中的post_migrate
)不是每个迁移调用的解决方案
如果你只需要加载数据和/或创建记录(即组/管理员...),最好的解决方案是恕我直言 数据迁移](https://docs.djangoproject.com/en/1.7/topics/migrations/#data-migrations)