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)