I have a model with a 'User' foreign key.

class Domain(models.Model):
        .
        owner = models.ForeignKey(User)

I have a requirement to only allow superuers to change the 'owner'
field.

I can do this by creating two model forms and excluding the 'owner'
field from one:

class DomainForm_superuser(ModelForm):
        class Meta:
                model = Domain

class DomainForm(ModelForm):
        class Meta:
                model = Domain
                exclude = ('owner',)

and then in my view I check if the current user is a superuser

@login_required()
def update_domain(request, domain_id):

        d = Domain.objects.get(id=domain_id)

        if request.method == 'POST':
                if request.user.is_superuser:
                        form = DomainForm_superuser(data=request.POST,
instance=d)
                else:
                        form = DomainForm(data=request.POST,
instance=d)

                if form.is_valid():
                        form.save()
                        return HttpResponseRedirect("/")
        else:
                if request.user.is_superuser:
                        form = DomainForm_superuser(instance=d)
                else:
                        form = DomainForm(instance=d)

        return render_to_response('domain_form.html', {"form": form},
context_instance=RequestContext(request))


This works but can anyone suggest a better/more efficient way of doing
this?

Paddy
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-users@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to