我需要提供一个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',)
如何实现结果?或者我如何将先前权限绑定到普通form.ModelForm?
提前致谢!
答案 0 :(得分: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)