Accessing request.user in class based generic view CreateView in order to set FK field in Django

后端 未结 3 2084
爱一瞬间的悲伤
爱一瞬间的悲伤 2020-11-29 23:14

So I have a model that includes:

class Place(models.Model):
    ....
    created_by = models.ForeignKey(User)

My view is like so:



        
3条回答
  •  予麋鹿
    予麋鹿 (楼主)
    2020-11-29 23:53

    How about overriding form_valid which does the form saving? Save it yourself, do whatever you want to it, then do the redirect.

    class PlaceFormView(CreateView):
        form_class = PlaceForm
    
        @method_decorator(login_required)
        def dispatch(self, *args, **kwargs):
            return super(PlaceFormView, self).dispatch(*args, **kwargs)
    
        def form_valid(self, form):
            obj = form.save(commit=False)
            obj.created_by = self.request.user
            obj.save()        
            return http.HttpResponseRedirect(self.get_success_url())
    

提交回复
热议问题