首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django将模型实例和查询集序列化在一起

Django将模型实例和查询集序列化在一起
EN

Stack Overflow用户
提问于 2017-01-27 14:47:17
回答 1查看 197关注 0票数 1

所以;

我正在尝试将django queryset和django model实例序列化在一起,以便可以在我的template.html中使用它们的值,如下所示:

代码语言:javascript
复制
# 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")

我得到的错误是:

代码语言:javascript
复制
[<Crop: Bell pepper>, <Crop: Head cabbage>] is not JSON serializable

有没有办法用字符串模型实例序列化许多查询集?

代码语言:javascript
复制
>>>type(plot_cropping_system)
>>><class 'str'>
>>> type(crops)
<class 'django.db.models.query.QuerySet'>
EN

回答 1

Stack Overflow用户

发布于 2017-01-27 15:24:59

如果这是一次性的事情,那么有一些方法可以在没有任何依赖的情况下完成它,否则我建议您研究django-rest-framework

在您的模型定义中,添加一个方法to_json并修改您的视图,如下所示。

代码语言:javascript
复制
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")

这只是一种快速完成此操作的方法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41888317

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档