使用“form_valid”django检查发出请求的用户是否是数据的所有者

ukqbszuj  于 2022-12-20  发布在  Go
关注(0)|答案(1)|浏览(102)

我目前正在尝试改进我的表单,我想在重写之前查看连接的用户是否与拥有数据的用户相对应
模型:

class Task(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE, null=True, blank=True)
    title = models.CharField(max_length=200, null=True, blank=True)

该视图:

class TaskUpdate(LoginRequiredMixin, UpdateView):
    model = Task
    template_name = "tasks/task_form.html"
    form_class = DateInputForm

我已经试过了:

def form_valid(self, form):
    if self.request.user.is_staff and self.object.user != self.request.user:
        return super().form_valid(form)

    if self.object.user != self.request.user:
        form.add_error(None, "You can't do that")
        return super().form_invalid(form)

另外,如果我不是staff用户,我就不能访问输入来选择用户,所以它是自动分配的。

<form action="" method="post">
    <div style="flex-direction: column">
        {% csrf_token %}

        <div style="margin-bottom: 10px">
            {% if admin %}
                <label for="user">User name : </label>
                {{ form.user }}
            {% endif %}
        </div>

我还想过做一个sql查询,看看正在做查询的用户是否与任务的注册用户相对应。

qxsslcnc

qxsslcnc1#

您需要在form_valid内添加
1.第一个月
在您可以设置条件之后

  1. if name.user != self.request.user:...
    现在,我们可以验证发布表单的用户是否为所有者

相关问题