在Django中将模型表单作为json响应发送

2024-10-01 22:29:55 发布

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

我想通过json响应向我的模板发送modelform(我不知道这是否可行)

实际上,在我的模板中,我有一个来自模型的对象列表,当我单击它们时,我会通过ajax或axios向我的视图发送一个post请求,并使用对象id,然后在视图中创建该对象的模型表单,我想将实例对象的模型表单发送回模板

总结一下,我如何通过json响应发送模型表单(如果不可能,如何)

更新

这是我的forms.py

...
class UpdateMedicalRecordForm(forms.ModelForm):
    class Meta:
        model = MedicalRecords
        fields = ("title", "file", "doctor", "doctor_access", "general_access")

        widgets = {
            "title": forms.Textarea(attrs={"rows": "", "class": "form-control", "placeholder": "Optional"}),
            "file": forms.FileInput(attrs={"class": "form-control"}),
            "doctor": forms.Select(attrs={"class": "form-control"}),
        }
        labels = {
            "title": "Description (Optional)",
            "general_access": "General Access For Record",
            "doctor_access": "Doctor Access For Record",
        }

然后在views.py中,我通过ajax获取medicalrecord, ID,并为该实例创建一个UpdateMedicalRecordForm()模型表单,如下所示:

from_instace = UpdateMedicalRecordForm(
    request.POST, request.FILES,
    instance=get_object_or_404(MedicalRecords, id=request.POST.get("file-id"))
)

在这里,我不知道如何将我的响应发送回模板,将其用作form.as\p或循环

...
JsonResponse({
   "form": ??
})

Tags: 对象模型form模板id表单accesstitle
1条回答
网友
1楼 · 发布于 2024-10-01 22:29:55

您可以使用django远程表单,如下所示:

    from django_remote_forms.forms import RemoteForm
    from django.forms.models import model_to_dict

    ####
    form = UpdateMedicalRecordForm(
        request.POST, request.FILES,
        instance=get_object_or_404(MedicalRecords, id=request.POST.get("file-id"))
    )
form['instance']=model_to_dict(form['instance'])
    remote_form = RemoteForm(form)
    remote_form_dict = remote_form.as_dict()
    response = HttpResponse(
        json.simplejson.dumps(remote_form_dict, cls=DjangoJSONEncoder),
        mimetype="application/json"
    )

    # Process response for CSRF
    csrf_middleware.process_response(request, response)
    return response

然后可以在js中解析响应

相关问题 更多 >

    热门问题