所以;
我正在尝试将django queryset和django model实例序列化在一起,以便可以在我的template.html中使用它们的值,如下所示:
# model.py
class PlotManagement(models.Model):
farm = models.ForeignKey(Farm,verbose_name='FieldID')
plotID = models.ForeignKey(Plot,verbose_name='PlotID')
crop = models.ManyToManyField(Crop,verbose_name='Crop Name')
cropping_system = models.CharField('Cropping System',max_length=20)
# function.py(where i serialize)
def plotmanagement_info(request,farm,plot):
plotmanagement_instance = PlotManagement.objects.get(plotID__pk=plot,farm=farm)
plot_cropping_system = plotmanagement_instance.cropping_system
crops = plotmanagement_instance.crop.all()
plotmanagement_info = [plot_cropping_system,crops]
return HttpResponse(json.dumps(plotmanagement_info),content_type="application/json")我得到的错误是:
[<Crop: Bell pepper>, <Crop: Head cabbage>] is not JSON serializable有没有办法用字符串模型实例序列化许多查询集?
>>>type(plot_cropping_system)
>>><class 'str'>
>>> type(crops)
<class 'django.db.models.query.QuerySet'>发布于 2017-01-27 15:24:59
如果这是一次性的事情,那么有一些方法可以在没有任何依赖的情况下完成它,否则我建议您研究django-rest-framework
在您的模型定义中,添加一个方法to_json并修改您的视图,如下所示。
class Crop(models.Model):
title = models.CharField(max_length=20)
def to_json(self):
return {"title":self.title,"field_1":field_2, "field_2":field_2}
# function.py(where i serialize)
def plotmanagement_info(request,farm,plot):
plotmanagement_instance = PlotManagement.objects.get(plotID__pk=plot,farm=farm)
plot_cropping_system = plotmanagement_instance.cropping_system
crops = plotmanagement_instance.crop.all()
plotmanagement_info = [plot_cropping_system,[crop.to_json() for crop in crops]]
return HttpResponse(json.dumps(plotmanagement_info),content_type="application/json")这只是一种快速完成此操作的方法。
https://stackoverflow.com/questions/41888317
复制相似问题