when you submited form, form_valid will called in CreateView and give you a instance of user form submited (form parameter in form_valid function) and you set user to logged user (self.request.user)
On Wed, Oct 25, 2017 at 7:25 PM, Jack <[email protected]> wrote: > I tried using FormView but kept running into errors. I used your second > response and it worked! I don't fully understand the code, but it seems to > work flawlessly. > > Thank you so much! I own you a big one. > > On Wednesday, October 25, 2017 at 5:57:04 AM UTC-4, k2527806 wrote: >> >> that your code : >> class CreatePost(CreateView): >> model = Post >> >> def form_valid(self, form): >> form.instance.user = self.request.user >> return super(CreatePost, self).form_valid(form) >> >> On Wed, Oct 25, 2017 at 1:22 PM, mohammad k <[email protected]> wrote: >> >>> use FormView >>> >>> https://docs.djangoproject.com/en/1.11/ref/class-based-views >>> /generic-editing/#formview >>> >>> On Wed, Oct 25, 2017 at 1:21 PM, mohammad k <[email protected]> wrote: >>> >>>> class Upload(FormView): >>>> http_method_names = ['get', 'post'] >>>> template_name = 'public/upload.html' >>>> success_url = reverse_lazy('upload') >>>> form_class = UploadForms >>>> >>>> def get(self, request, *args, **kwargs): >>>> form = self.form_class(user=request.user) >>>> return render(request, self.template_name, {'form': form}) >>>> >>>> def post(self, request, *args, **kwargs): >>>> form = self.form_class(request.POST, request.FILES, >>>> user=request.user) >>>> if form.is_valid(): >>>> data = form.save(commit=False) >>>> data.user = request.user >>>> data.save() >>>> messages.add_message(request, messages.SUCCESS, >>>> self.success_message) >>>> return redirect(self.success_url) >>>> return render(request, self.template_name, {'form': form}) >>>> >>>> On Wed, Oct 25, 2017 at 3:22 AM, Jack Zhang <[email protected]> wrote: >>>> >>>>> Thanks for your response. This is an off-topic question but I can't >>>>> figure out how to get 'request' working. I'm using the CreateView generic >>>>> class, so there's no space to insert 'request'. This is what my code >>>>> looks >>>>> like. When I try to run it, it tells me that request is not found. >>>>> >>>>> class ListingCreateView(LoginRequiredMixin, CreateView): >>>>> model = BuyerListing >>>>> >>>>> form_class = PostListing(self.request.POST) >>>>> if form.is_valid(): >>>>> form_save = form.save(commit=False) >>>>> form_save.user = request.user # user is logged in >>>>> form.save() >>>>> >>>>> def get_queryset(self): # the user want to edit this post must be >>>>> owner this post >>>>> post_qs = super(PostListing, self).get_queryset() >>>>> return post_qs.filter(user=self.request.user) >>>>> >>>>> On Tuesday, October 24, 2017 at 12:35:15 PM UTC-4, k2527806 wrote: >>>>>> >>>>>> try that in your views >>>>>> >>>>>> form = Dog_Form(request.POST) >>>>>> if form.is_valid(): >>>>>> form_save = form.save(commit=False) >>>>>> form_save.user = request.user # user is logged in >>>>>> form.save() >>>>>> >>>>>> >>>>>> On Tue, Oct 24, 2017 at 7:37 PM, Jack Zhang <[email protected]> >>>>>> wrote: >>>>>> >>>>>>> Let's say I have a model called 'Dogs'. Users can create instances >>>>>>> of Dogs. Let's say we have a user called User1. I have 2 questions: >>>>>>> >>>>>>> 1. When User1 creates an instance of Dogs, how do I automatically >>>>>>> assign that instance to User1? I tried using a model field like this >>>>>>> but >>>>>>> it doesn't pick the user automatically: >>>>>>> >>>>>>> user = models.ForeignKey(User, unique=False) >>>>>>> >>>>>>> 2. After the instance has been created, how do I make the instance >>>>>>> only editable and removable by the user who made it? Basically, if >>>>>>> User1 >>>>>>> creates an instance of Dogs, only User1 can edit and delete that >>>>>>> instance. >>>>>>> >>>>>>> Thanks. >>>>>>> >>>>>>> -- >>>>>>> You received this message because you are subscribed to the Google >>>>>>> Groups "Django users" group. >>>>>>> To unsubscribe from this group and stop receiving emails from it, >>>>>>> send an email to [email protected]. >>>>>>> To post to this group, send email to [email protected]. >>>>>>> Visit this group at https://groups.google.com/group/django-users. >>>>>>> To view this discussion on the web visit >>>>>>> https://groups.google.com/d/msgid/django-users/dedbfe8b-1013 >>>>>>> -4844-b142-1e8615a1ef9a%40googlegroups.com >>>>>>> <https://groups.google.com/d/msgid/django-users/dedbfe8b-1013-4844-b142-1e8615a1ef9a%40googlegroups.com?utm_medium=email&utm_source=footer> >>>>>>> . >>>>>>> For more options, visit https://groups.google.com/d/optout. >>>>>>> >>>>>> >>>>>> -- >>>>> You received this message because you are subscribed to the Google >>>>> Groups "Django users" group. >>>>> To unsubscribe from this group and stop receiving emails from it, send >>>>> an email to [email protected]. >>>>> To post to this group, send email to [email protected]. >>>>> Visit this group at https://groups.google.com/group/django-users. >>>>> To view this discussion on the web visit >>>>> https://groups.google.com/d/msgid/django-users/950d853a-ade3 >>>>> -4d27-8e23-a47c6b70c80e%40googlegroups.com >>>>> <https://groups.google.com/d/msgid/django-users/950d853a-ade3-4d27-8e23-a47c6b70c80e%40googlegroups.com?utm_medium=email&utm_source=footer> >>>>> . >>>>> >>>>> For more options, visit https://groups.google.com/d/optout. >>>>> >>>> >>>> >>> >> -- > You received this message because you are subscribed to the Google Groups > "Django users" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To post to this group, send email to [email protected]. > Visit this group at https://groups.google.com/group/django-users. > To view this discussion on the web visit https://groups.google.com/d/ > msgid/django-users/3b9b7b1a-78dd-4123-aef5-82e0b7089cb1%40googlegroups.com > <https://groups.google.com/d/msgid/django-users/3b9b7b1a-78dd-4123-aef5-82e0b7089cb1%40googlegroups.com?utm_medium=email&utm_source=footer> > . > > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "Django users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at https://groups.google.com/group/django-users. To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/CACOk0TwXXhgfPgbt5w7SbdE9kPSOXMuTnXmdMwmEOiBCTvEiBg%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.

