我正在使用 ModelForm 为模型捕获一些数据,虽然我希望将这些数据保存到数据库中,但我还想将其导出到 XML 文件以在外部系统中进行转换/使用。
请参阅下面的示例:
def warranty(request):
WarrantyFormSet = modelformset_factory(Warranty, form=WarrantyForm)
if request.method == 'POST':
formset = WarrantyFormSet(request.POST, request.FILES)
if formset.is_valid():
new = formset.save(commit=False)
out = open("file.xml", "w")
XMLSerializer = serializers.get_serializer("xml")
xml_serializer = XMLSerializer()
for n in new:
xml_serializer.serialize(Warranty.objects.all(), stream=out)
#.filter(id = n.id)
n.save()
return HttpResponse(xml_serializer.serialize(Warranty.objects.filter(id = n.id)))
else:
formset = WarrantyFormSet(queryset = Warranty.objects.none())
return render(request,'warranty.html', {'formset': formset})
该对象在 HttpResponse 中进行了适当的序列化(即我可以看到可接受的 XML 输出),但 XML 文件本身没有输出。如果我删除 QuerySet 过滤器(即调用 .all()),那么 XML 文件将正确包含与保修模型相关的所有对象。奇怪的是,在一种情况下的行为很好,在另一种情况下却没有,所以我不能再麻烦了。
小唯快跑啊
相关分类