如何在Django中只返回UpdateView类中的表单?

2024-06-26 13:43:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图将编辑和提交表单的功能视图转换为基于类的视图UpdateView。我需要查看表格。你知道吗

到目前为止,我一直使用这种观点:

@login_required
def edit_sale_view(request, id):
    instance = get_object_or_404(Sale, id=id)
    form = EditSaleForm(instance=instance)
    if request.method == "POST":
        form = EditSaleForm(request.POST, instance=instance)

        if form.is_valid():
            obj = form.save(commit=False)
            obj.user = request.user
            obj.save()
            return JsonResponse({'msg': 'Data saved'})
        else:
           return JsonResponse({'msg': 'Data not saved'})
    return HttpResponse(form.as_p())

form.as_p()很重要,因为它以模态窗口中显示的形式使用。你知道吗

所以,我想我需要找出如何只返回表单而不是整个模板。你知道吗


Tags: instanceform视图idobj表单returnif
1条回答
网友
1楼 · 发布于 2024-06-26 13:43:21

您可以通过重写form_valid方法来访问表单实例。例如:

class SomeView(UpdateView):
    ...
    def form_valid(self, form):
        self.object = form.save(commit=False)
        self.object.user = self.request.user
        self.object.save()
        return HttpResponseRedirect(self.get_success_url()) # or use return JsonResponse({'msg': 'Data saved'})

    def get_initial(self):
        initial = super(SomeView, self).get_initial()
        # do something
        return initial()

相关问题 更多 >