用django序列化两个不同的模型

时间:2014-04-22 14:06:16

标签: python json django serialization django-models

我有两个模型PropertyPropertyImage。 Property保存所有数据,PropertyImage仅用于允许上载无限数量的图像。

 class PropertyImage(models.Model):
     property = models.ForeignKey(Property, related_name='images')
     url = models.ImageField(upload_to=property_image_name)

我想要的是能够在Property类的序列化中添加一个字段,以便它添加PropertyImage.url元素。它不需要是url所拥有的所有Property元素,一个就足够了。我用这个来预览房产。

现在,我有:

results = Property.objects.raw(mysql_query) 
markers = serializers.serialize('json',results)

当然PropertyImage被遗漏了,我无法找到一种干净的方式将其添加到JSON并将其与它所属的Property相关联。

1 个答案:

答案 0 :(得分:1)

您可以继续model_to_dict()

import json
from django.forms.models import model_to_dict

results = Property.objects.raw(mysql_query) 
data = []
for result in results:
    model = model_to_dict(result)
    model['image_url'] = model.property_image_set.first().url
    data.append(model)

markers = json.dumps(data)

此处的image_url字段设置为每个PropertyImage实例的first() url&n; Property字段值在results查询集中。

另见:

希望有所帮助。