Пользовательская форма для группового разрешения с отфильтрованным набором запросов - PullRequest
2 голосов
/ 06 августа 2010

Мне нужно предложить объект, из которого пользователь может управлять разрешениями, связанными с какой-либо группой.

Я бы хотел использовать функцию forms.ModelForm, которая пришла от django, но я не могу понять, как изменить набор запросов, по которому циклы поля. Я также подробно изучил contrib.admin и contrib.auth, чтобы узнать, где создаются эти формы, но не могу их найти.

Я пытаюсь не использовать нормальную модель, поэтому прецедентные настройки уже установлены.

Это сценарий. Я добавил 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',)

Как мне достичь результата? Или как я могу связать прецедентное разрешение с нормальной формой. ModelForm?

Заранее спасибо!

1 Ответ

5 голосов
/ 06 августа 2010
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) 
...