首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django forms和django-guardian:显示UserObjectPermissions的过滤列表

Django forms和django-guardian:显示UserObjectPermissions的过滤列表
EN

Stack Overflow用户
提问于 2014-08-21 22:34:53
回答 1查看 295关注 0票数 0

我希望管理员能够分配/删除django-guardian权限给一个人,以及他们如何与项目对象相关,基于可用于该对象的权限。

屏幕如下所示:

项目在URL中提供,视图可以看到。我创建了一个自定义表单,它将项目作为输入,如下所示:

代码语言:javascript
复制
from django import forms
from django.contrib.auth.models import User
from guardian.shortcuts import get_perms_for_model

class ProjectAssignmentForm(forms.Form):
    def __init__(self, *args, **kwargs):
        self.p = kwargs.pop('project')
        self.perms = [(x, x) for x in get_perms_for_model(self.p)]
        super(ProjectAssignmentForm, self).__init__(*args, **kwargs)
        self.fields['permission'].widget = forms.CheckboxSelectMultiple()

    user = forms.ModelChoiceField(queryset=User.objects.all())  
    permission = forms.ChoiceField(choices=self.perms)

这给了我一个NameError,我想是因为我在__init__方法之外使用了self。我做错了什么?

EN

回答 1

Stack Overflow用户

发布于 2014-08-21 23:29:41

好吧,这太尴尬了。这就是答案--我差一点就做到了:

代码语言:javascript
复制
from django import forms
from django.contrib.auth.models import User
from guardian.shortcuts import get_perms_for_model

class ProjectAssignmentForm(forms.Form):
  def __init__(self, *args, **kwargs):
    super(ProjectAssignmentForm, self).__init__(*args, **kwargs)
    self.fields['permission'].widget = forms.CheckboxSelectMultiple(
        choices=[(x, x) for x in get_perms_for_model(kwargs.pop('project'))])

  user = forms.ModelChoiceField(queryset=User.objects.all())  
  permission = forms.MultipleChoiceField()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25429134

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档