将 request.user 保存到 Django 额外视图

Save request.user to an django extra view

将 request.user 保存到 django 额外视图。

例子来自Django-Extra-Views。似乎如示例所述那样工作。

https://django-extra-views.readthedocs.org/en/latest/views.html

class OrderCreateView(CreateWithInlinesView):
    model = Order
    inlines = [ItemsInline, TagsInline]

    def get_success_url(self):
        return self.object.get_absolute_url()

以下都试过了。它们不起作用。

def form_valid(self, form):
    # self.object = form.save()
    form.instance.owner = self.request.user
    form.save()
    return super(OrderCreateView, self).form_valid(form)

throws error:
 IntegrityError at /add/
 null value in column "owner_id" violates not-null constraint

也尝试添加它 form.save

def save(self,  commit=True):
    instance = super(OrderCreateView, self).save(commit=False)
    instance.owner = self.request.user
    instance.save()


throws 
'OrderForm' object has no attribute 'request'

如果有人遇到问题,我可以通过将以下内容添加到视图中来使其正常工作。

def forms_valid(self, form, inlines):
    form.instance.owner = self.request.user
    return super(CreateView, self).forms_valid(form, inlines)