get current user in Django Form [duplicate]

佐手、 提交于 2019-11-29 22:17:33
Yulia

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)
    
  2. 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))
    
  3. the line of the save() method would look like this now:

    guest = self.guest_class.objects.get(user=self.user)
    
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!