管理者が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__
私は何を間違っていますか?