django updateview将request.id传递给字段

时间:2019-07-14 08:02:13

标签: django django-views django-generic-views

我有一个UpdateView类,我想传递event_agency的{​​{1}}中的user.id,即fields的值将设置为{{1} },而不必将其作为输入。

event_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

1 个答案:

答案 0 :(得分:0)

通常,在这种情况下,您向该表单添加字段。您可以按照form_valid method [Django-doc]中的形式“修补”实例,例如:

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)

话虽如此,看来event_agency应该是用户模型的ForeignKey,在这种情况下,您应该将其设置为from.instance.event_agency = self.request.user

您可以添加LoginRequiredMixin mixin [Django-doc],以防止未经身份验证的用户访问您的视图。