【问题标题】:django updateview pass request.id to fielddjango updateview 将 request.id 传递给字段
【发布时间】:2019-11-23 07:40:51
【问题描述】:

我有一个UpdateView 类,我想传递fieldsevent_agency 中的user.id,即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来完成,但是如何使用UpdateView类呢?

例如,我不能这样做

class EventUpdate(UpdateView, request):

【问题讨论】:

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


    【解决方案1】:

    通常在这种情况下,您向该表单添加字段。您可以在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] 以防止用户在未通过身份验证时访问您的视图。

    【讨论】:

    • 你的意思是form.instance.event_agency = self.request.user还是from.
    • @afsara_ben:form.instance.event_agency = self.request.userform 在这里作为参数传递。
    • 我收到此错误Cannot assign "<SimpleLazyObject: <User: ritu9>>": "Event.event_agency" must be a "Agency" instance.
    • 我想要将ritu9 分配给event_agency 我使用username 登录的地方ritu9
    • @afsara_ben:那不是 id,那是 request.user.username。但正如错误所说,它不寻找User,它寻找Agency 对象,所以这里的逻辑有问题。
    猜你喜欢
    • 2012-03-02
    • 1970-01-01
    • 2014-09-02
    • 2010-12-25
    • 2018-12-27
    • 1970-01-01
    • 2014-12-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多