具有过滤查询集的组权限的自定义表单

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?

具有响应式表单的自定义控件

具有特定字段的自定义查询集的 Django ModelForm 实例

jeecgboot-online在线开发2

jeecgboot-online在线开发2

我希望文本框、按钮、标签等基本表单控件具有相同的自定义方法