我正在创建CMS,现在面临一些问题,我需要你的建议。我有几个不同的模块(应用程序)我可以为它们定义自定义权限 - 在模型中我定义自定义权限,如“view_store”,“edit_store”,“delete_store”等。然后我定义了不同的用户组(我希望有基于组的用户访问控制) - admin,editor,vip,user。
我在运行一次性命令初始化CMS(manage.py initcms)时创建这些组,我当然希望所有正确的权限将同时添加到组中。
initcms操作在syncdb之后运行,因此所有模型都在DB中(当然也有关于权限的信息)。
我有一些想法......如果这是好的方式,或者你有更好的方法?让我来描述一下:我想为vip用户提供所有模型(具有此权限定义)的所有权限给“view_ *”。这意味着VIP可以查看所有内容。我有一个想法,在初始化数据库时,只需获取符合模式“LIKE view_%”的所有条目(所有权限),然后将这些条目全部添加到组的权限中。
然后问题是如果新模块将被添加...我需要重新运行此操作并检查所有权限是否正确...也许有一些动态方式来处理组权限?
答案 0 :(得分:1)
一种可能的解决方案是使用Django Signals,可以在调用模型的保存方法之前或之后,或在任何M2M操作发生之后或之前,在syncdb等之后触发...您可以选择适当的最适合你的信号然后调用检查相关权限的函数,并在必要时添加或删除任何...