gpt4 book ai didi

python - 如何在 django 中从组创建自定义组

转载 作者:太空狗 更新时间:2023-10-29 20:31:52 27 4
gpt4 key购买 nike

我正在尝试弄清楚如何在 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"),
)

查看

# 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})

这里的问题:

1) 我不想使用 Group.objects.get_or_create(name="erp_admin") CompanyGroup.objects.get_or_create(name ="admin") 应用程序的组仅限于应用程序。

2) 如何将每个模型的 Meta 类中定义的权限映射到一个组?

3) 自定义组与公司相关,这意味着每个公司都有组 Admin,以所有者开头。所有者可以创建像“经理”这样的用户。经理可以创建组/权限、添加用户、为用户设置权限,但无论如何不能对管理员组进行增删改查。所以组中有一种层次结构(我认为层次结构取决于添加到组的权限)。

为了使这里更清楚,您可以查看概念图片: company example

所以我认为主要的问题是:

1) 如何继承Groups来创建自定义组。

2) 如何将模型的权限映射到组。

3) 如何将组限制为 CompanyID。

我希望问题定义明确。如果我需要澄清一些事情,请告诉我。

在此先感谢您的支持。

编辑1)

对于第 3 点,我在 SO 上找到了这个答案: Extend django Groups and Permissions但问题是如何查询这些数据以及如何检查权限。您如何覆盖 save() 方法以将元信息添加到属性“名称”中?组名称可以类似于:“company_id#admin”或“company_id#manager”。

最佳答案

您可能正在寻找每个对象的权限。 Django 不支持开箱即用,但可以使用应用程序 Django-guardian

关于python - 如何在 django 中从组创建自定义组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38375866/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com