且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

在Django Vanilla CreateView上设置当前用户

更新时间:2023-12-04 10:27:22

您不需要将用户传递给表单,所以不要t覆盖 get_form 方法。您已经通过在视图中设置 fields 从模型表单中排除了用户 field ,因此您不需要自定义模型形式。

You don't need to pass the user to the form, so don't override the get_form method. You have already excluded the user field from the model form by setting fields in your view, so you shouldn't need a custom model form either.

应该足以覆盖 form_valid 方法,并在保存表单时设置用户。

It should be enough to override the form_valid method, and set the user when the form is saved.

from django.http import HttpResponseRedirect

class CreateMeasurement(CreateView):
    model = Measurement
    fields = ['date']
    success_url = reverse_lazy('list_measurements')

    def form_valid(self, form):
        obj = form.save(commit=False)
        obj.user = self.request.user
        obj.save()
        return HttpResponseRedirect(self.get_success_url())