Wednesday, October 25, 2017

Re: Automatically assign model instance to the user who created it. And only that user can edit/delete the instance.

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 <valachio123@gmail.com> 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 <valac...@gmail.com> 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 django-users...@googlegroups.com.
To post to this group, send email to django...@googlegroups.com.
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.
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 django-users+unsubscribe@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
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.

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 django-users+unsubscribe@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
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/CACOk0TxLHOc_r_c_53650JR57NmKm%3DDDtAOt%2BayWr0k8V5rwKg%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

No comments:

Post a Comment