具有筛选的Queryset的组权限的自定义表单

Enr*_*sso 2 django django-forms django-queryset

我需要提供一个from,用户可以在其中管理与某个Group相关的权限.

我想使用来自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',)
Run Code Online (Sandbox Code Playgroud)

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

提前致谢!

che*_*art 5

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) 
Run Code Online (Sandbox Code Playgroud)