0

私はフォームを持っています(Alasdairに感謝します):

class PermissionsModelMultipleChoiceField(forms.ModelChoiceField):
    def label_from_instance(self, obj):
        return "%s" % obj.name


class UserForm(forms.ModelForm):
    first_name = forms.CharField(label=u'First name', required=True)
    last_name = forms.CharField(label=u'Last name', required=True)
    permissions = PermissionsModelMultipleChoiceField(Permission.objects.none(), widget=forms.CheckboxSelectMultiple)

    def __init__( self, *args, **kwargs ):
        super( NewUserForm, self ).__init__( *args, **kwargs )
        ctypes = ContentType.objects.filter(
            Q(app_label='articles') |
            Q(app_label='tags')
        )
        self.fields['permissions'].queryset = Permission.objects.filter(content_type__in=ctypes)

    class Meta:
        model = User

テンプレートのアクセス許可では、次のようなアクセス許可が表示されます。

[] Can change article
[] Can delete article
[] Can view article

[...]

通話フォーム:

profile_user = User.objects.get(pk=user_id)

if request.method == 'POST':
    form = UserForm(request.POST, instance=profile_user)
    if form.is_valid():
        form.save()
        [... here will save permissions ...]
        return HttpResponseRedirect(reverse('home'))
else:
    form = UserForm(instance=profile_user)

編集されたユーザーに割り当てられているこの権限をテンプレートにチェックインする方法を教えてください。

4

1 に答える 1