django - How to checked permissions in edit user form? -
i have form (thanks 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 and in template permissions shows me permissions this:
[] can change article [] can delete article [] can view article [...] calling form:
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 save permissions ...] return httpresponseredirect(reverse('home')) else: form = userform(instance=profile_user) how set checked in template permissions assigned edited user?
use argument data populate checkboxes when instantiate form (only outside post request) this:
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 save permissions ...] return httpresponseredirect(reverse('home')) else: user_permissions_list = # place here query profile_user permissions form = userform(instance=profile_user, data={'permissions':user_permissions_list}) using data key mark checkboxes according user actual permissions.
hope helps!
Comments
Post a Comment