0

管理者がdjango-guardianパーミッションを人に割り当て/削除し、そのオブジェクトに利用可能なパーミッションに基づいて、それらがプロジェクトオブジェクトにどのように関係するかを知りたいです。

画面は次のようになります。

ユーザーのドロップダウンとそれに続く権限のチェックリスト

プロジェクトは、ビューが表示できる URL で提供されます。次のように、プロジェクトを入力として受け取るカスタム フォームを作成しました。

from django import forms
from django.contrib.auth.models import User
from guardian.shortcuts import get_perms_for_model

class ProjectAssignmentForm(forms.Form):
    def __init__(self, *args, **kwargs):
        self.p = kwargs.pop('project')
        self.perms = [(x, x) for x in get_perms_for_model(self.p)]
        super(ProjectAssignmentForm, self).__init__(*args, **kwargs)
        self.fields['permission'].widget = forms.CheckboxSelectMultiple()

    user = forms.ModelChoiceField(queryset=User.objects.all())  
    permission = forms.ChoiceField(choices=self.perms)

これにより、現在 NameError が返されます。これは、メソッドselfの外で使用しているためだと思います。__init__私は何を間違っていますか?

4

1 に答える 1