django updateview pass request.id to字段

django updateview pass request.id to字段,django,django-views,django-generic-views,Django,Django Views,Django Generic Views,我有一个UpdateView类,我想在字段的event\u agency中传递user.id,即event\u agency的值将设置为user.id,我不必将其作为输入 # view for the event update page class EventUpdate(UpdateView): model = Event # the fields mentioned beindexlow become the entyr rows in the update form

我有一个
UpdateView
类,我想在
字段的
event\u agency
中传递user.id,即
event\u agency
的值将设置为
user.id
,我不必将其作为输入

# view for the event update page
class EventUpdate(UpdateView):
    model = Event

    # the fields mentioned beindexlow become the entyr rows in the update form
    fields = ['event_name', 'event_venue', 'event_type', 'event_agency']
不使用
UpdateView
可以通过创建表单实例并传递
request
来完成,但是如何使用
UpdateView
类来完成

例如,我不能这样做

class事件更新(UpdateView,request):


通常在这种情况下,您不会向该表单添加字段。您可以在中的表单中“修补”实例,如:

来自django.contrib.auth.mixins导入登录所需的mixin
类EventUpdate(LoginRequiredMixin,UpdateView):
模型=事件
#无活动机构
字段=['事件名称','事件地点','事件类型']
def表单_有效(自身、表单):
form.instance.event_agency=self.request.user.pk
super().form\u有效(form)
这就是说,对于您的用户模型来说,
event\u agency
应该是一个
ForeignKey
,在这种情况下,您应该将其设置为
from.instance.event\u agency=self.request.user


如果视图未经身份验证,您可以添加以阻止用户访问视图。

通常在这种情况下,您不会向该表单添加字段。您可以在中的表单中“修补”实例,如:

来自django.contrib.auth.mixins导入登录所需的mixin
类EventUpdate(LoginRequiredMixin,UpdateView):
模型=事件
#无活动机构
字段=['事件名称','事件地点','事件类型']
def表单_有效(自身、表单):
form.instance.event_agency=self.request.user.pk
super().form\u有效(form)
这就是说,对于您的用户模型来说,
event\u agency
应该是一个
ForeignKey
,在这种情况下,您应该将其设置为
from.instance.event\u agency=self.request.user


您可以添加,以防止用户在未经身份验证的情况下访问您的视图。

您的意思是
form.instance.event\u agency=self.request.user
还是
from.
@afsara\u ben:
form.instance.event\u agency=self.request.user
表单
在这里作为一个参数传递。我得到这个错误
无法分配“”:“Event.Event\u agency”必须是一个“agency”实例。
我想要的是将
ritu9
分配到
Event\u agency
我用
用户名
ritu9
登录的
位置。@afsara\u ben:这不是id,这就是
请求.user.username
。但正如错误所说,它并没有查找
用户
,而是查找
代理
对象,因此这里的逻辑有问题。您的意思是
form.instance.event\u Agency=self.request.User
还是
from.
@afsara\u ben:
form.instance.event\u Agency=self.request.User
表单
在这里作为一个参数传递。我得到这个错误
无法分配“”:“Event.Event\u agency”必须是一个“agency”实例。
我想要的是将
ritu9
分配到
Event\u agency
我用
用户名
ritu9
登录的
位置。@afsara\u ben:这不是id,这就是
请求.user.username
。但正如错误所说,它不会查找
用户
,而是查找
代理
对象,因此这里的逻辑有问题。
from django.contrib.auth.mixins import LoginRequiredMixin

class EventUpdate(LoginRequiredMixin, UpdateView):
    model = Event
    # no event_agency
    fields = ['event_name', 'event_venue', 'event_type']

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