rea*_*not 10 python django permissions inheritance usergroups
我正在试图弄清楚如何在Django中创建自定义组,以便组与应用程序相关而不是与项目相关.
例如,当用户想要创建公司时,它应该是公司的所有者:
class Company(models.Model):
owner = models.ForeignKey(User)
name = models.CharField(max_length=64, unique=True)
description = models.TextField(max_length=512)
created_on = models.DateTimeField(auto_now_add=timezone.now)
class Meta:
permissions = (
("erp_view_company", "Can see the company information"),
("erp_edit_company", "Can edit the company information"),
("erp_delete_company", "Can delete the company"),
)
Run Code Online (Sandbox Code Playgroud)
# Create your views here.
def register(request, template_name='erp/register.html'):
if request.method == 'POST':
company_form = CompanyRegistrationForm(request.POST)
if company_form.is_valid():
# Create a new company object but avoid saving it yet
new_company = company_form.save(commit=False)
# Set the owner
if request.user.is_authenticated():
new_company.owner = request.user
# Add the user to group admin
group = Group.objects.get_or_create(name="erp_admin")
request.user.groups.add(group)
# Save the User object
new_company.save()
template_name = 'erp/register_done.html'
return render(request, template_name, {'new_company': new_company})
else:
company_form = CompanyRegistrationForm()
return render(request, template_name, {'company_form': company_form})
Run Code Online (Sandbox Code Playgroud)
这里的问题是:
1)而不是让Group.objects.get_or_create(name="erp_admin")我想要CompanyGroup.objects.get_or_create(name="admin")将应用程序的组限制在应用程序中.
2)我如何将每个模型的Meta类中定义的权限映射到一个组?
3)自定义组与公司相关,这意味着每个公司都有组Admin,从所有者开始.所有者可以创建像"经理"这样的用户.管理员可以创建组/权限,添加用户,为用户设置权限,但无论如何CRUD管理员组.因此组中存在一种层次结构(我认为层次结构取决于添加到组中的权限).
所以我认为主要的问题是:
1)如何继承组以创建自定义组.
2)如何将模型的权限映射到组.
3)如何将组限制为CompanyID.
我希望问题得到明确界定.如果我必须澄清一些事情,请告诉我.
在此先感谢您的支持.
对于第3点,我在SO上找到了这个答案:扩展django组和权限,但问题是如何查询这些数据以及如何检查权限.你怎么能覆盖save()方法来将元信息添加到属性'name'?组名可以是:"company_id #admin"或"company_id#manager".
| 归档时间: |
|
| 查看次数: |
3027 次 |
| 最近记录: |