具有过滤查询集的组权限的自定义表单
Posted
技术标签:
【中文标题】具有过滤查询集的组权限的自定义表单【英文标题】: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?
提前致谢!
【问题讨论】:
【参考方案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)
【讨论】:
以上是关于具有过滤查询集的组权限的自定义表单的主要内容,如果未能解决你的问题,请参考以下文章
Drupal 6 中的自定义搜索表单:视图/面板还是自定义 sql?