首页 > 解决方案 > UpdateView 和防止用户编辑其他用户的内容

问题描述

我正在使用 UpdateView 类来允许用户在我的应用程序中更新他们的内容。我现在正试图弄清楚如何允许用户只编辑他们自己的内容(而不是其他用户的内容)。感谢任何帮助。

class OrganismUpdate(UpdateView):
   model = Organism
   fields = ['name', 'edibility', 'ecosystem', 'weather', 'date', 'location']
   template_name_suffix = '_update_form'
   success_url ="/organism_images"

标签: pythondjango

解决方案


您可以使用UserPassesTestMixin该类,因此用户将只能更新 hhis/heer 个人资料

from django.contrib.auth.mixins import LoginRequiredMixin, UserPassesTestMixin

class OrganismUpdate(UpdateView, UserPassesTestMixin):
   model = Organism
   fields = ['name', 'edibility', 'ecosystem', 'weather', 'date', 'location']
   template_name_suffix = '_update_form'
   success_url ="/organism_images"


    def form_valid(self,form):
        form.instance.user= self.request.user
        return super().form_valid(form)

    def test_func(self):
        post = self.get_object()
        if self.request.user== organism.user:
            return True
        return False

推荐阅读