小编Ale*_*e A的帖子

django admin - 分组编辑或查看模型的权限

我正在寻找一种方法来自定义Django Administration以支持基于用户组的权限.

例如,我刚刚创建了Developers组,现在我也创建了Tickets模型,使用AdminModel指定如何列出数据.

我想让这个模型仅由开发人员看到,并且彼此隐藏而不是在这个组中(例如,根据组过滤视图).我已经阅读了很多文档,但无法真正找到并理解如何使其工作.

出于安全考虑,我还需要在添加 - 删除特定模型的对象(我已经隐藏到开发人员组以外的人员的对象)时在运行时检查用户组,否则它只需要知道要使用的URL楷模

它看起来像一个简单的任务,但也许我错过了一些东西......任何第三方中间件,或只是一种方法吗?如果需要,我也准备编辑管理视图,但我需要知道该怎么做.

谢谢 :-)

python django

8
推荐指数
1
解决办法
3846
查看次数

django admin - 访问BaseInlineFormSet中的request.user

我刚刚创建了一个forms.models.BaseInlineFormSet覆盖TabularInline模型的默认formset.我需要在formset validation(clean)中评估用户的组,因为某些组必须在范围(0,20)内写入一个数字.

我正在使用django admin来自动生成界面.

我试过在init方法中从kwargs获取请求和用户,但是我无法获得引用.

这就是我现在拥有的:

class OrderInlineFormset(forms.models.BaseInlineFormSet):
    def __init__(self, *args, **kwargs):
        self.user = kwargs.pop('user')
        super(OrderInlineFormset, self).__init__(*args, **kwargs)

    def clean(self):
        # get forms that actually have valid data
        count = 0
        for form in self.forms:
            try:
                if form.cleaned_data:
                    count += 1
                    if self.user.groups.filter(name='Seller').count() == 1:
                        if form.cleaned_data['discount'] > 20:
                            raise forms.ValidationError('Not authorized to specify a discount greater than 20%')
            except AttributeError:
                # annoyingly, if a subform is invalid Django explicity raises
                # an AttributeError …
Run Code Online (Sandbox Code Playgroud)

django django-models django-forms django-admin

3
推荐指数
1
解决办法
1754
查看次数