【问题标题】:Custom Form for Group Permission with filtered Queryset具有过滤查询集的组权限的自定义表单
【发布时间】:2011-03-26 08:36:18
【问题描述】:

我需要提供一个用户可以在其中管理与某个组关联的权限的方法。

我想使用来自 django 的 forms.ModelForm 功能,但我不明白如何修改字段循环的查询集。我还深入研究了 contrib.admin 和 contrib.auth 以发现这些表单的生成位置,但找不到。

我正在尝试不使用普通的modelForm,因此已经设置了先例设置。

这就是场景。我为我的项目添加了 40 个(或多或少)权限,它们的代号都以“xxxxx.”开头,所以我想这样做:

class PermissionGroup(forms.ModelForm):
#permissions = forms.ModelMultipleChoiceField(queryset = Permission.objects.filter(codename__startswith = 'xxxxx.'), widget=forms.CheckboxSelectMultiple) 
class Meta:
    model = Group
    fields = ('permissions',)

我怎样才能达到这个结果?或者如何将先例权限绑定到普通 form.ModelForm?

提前致谢!

【问题讨论】:

    标签: django django-forms django-queryset


    【解决方案1】:
    class PermissionGroup(forms.ModelForm):
        permissions = forms.ModelMultipleChoiceField(Permission.objects.none(), widget=forms.CheckboxSelectMultiple)
    
        def __init__( self, pass_a_Q_object=None, *args, **kwargs ):
            super( PermissionGroup, self ).__init__( *args, **kwargs )
            if pass_a_Q_object:
                self.fields['permissions'].queryset = Permission.objects.filter(pass_a_Q_object) 
    

    【讨论】:

      猜你喜欢
      • 2016-09-11
      • 2018-08-06
      • 1970-01-01
      • 2010-10-14
      • 2016-01-10
      • 1970-01-01
      • 2013-02-22
      • 1970-01-01
      • 2012-03-05
      相关资源
      最近更新 更多