get current user in Django Form [duplicate]

I found the way 🙂

  1. Write a __init__ method on the form :
    def __init__(self, user, *args, **kwargs):
        self.user = user
        super(RSVPForm, self).__init__(*args, **kwargs)
  1. Change view function, and pass request.user to the form
def event_view(request, slug, model_class=Event, form_class=RSVPForm,
               template_name="rsvp/event_view.html"):
    event = get_object_or_404(model_class, slug=slug)

    if request.POST:
        form = form_class(request.user, request.POST)

    if form.is_valid():
        guest = form.save()
        return HttpResponseRedirect(reverse('rsvp_event_thanks',
                                            kwargs={'slug': slug, 'guest_id': guest.id}))
    else:
        form = form_class(request.user)

    return render_to_response(template_name, {
        'event': event,
        'form': form,
    }, context_instance=RequestContext(request))
  1. the line of the save() method would look like this now:
guest = self.guest_class.objects.get(user=self.user)

Leave a Comment