我正在尝试使用Django Rest框架序列化我的模型-http: //django-rest-framework.org/
我想要的是序列化其中具有ManyToMany关系的模型:
class ImageResource(models.Model):
# Some code here
image = models.ImageField(upload_to=upload_images_to)
keywords = models.ManyToManyField('cards.Keyword', related_name='image_keywords', blank=True);
# More code here
这就是我的模型(我删除了一些字段以帮助您专注于关键字字段)
我的序列化器如下所示:
class ImageResourceSerializer(serializers.HyperlinkedModelSerializer):
keywords = serializers.ManyRelatedField(source='keywords')
class Meta:
model = ImageResource
fields = ('id', 'url', 'image', 'keywords')
最后我要展示的是API的结果
{
"id": 2,
"url": "http://127.0.0.1:3004/apiimageresource/2/",
"image": "images/1386508612-97_img-02.JPG",
"keywords": [
"birthday",
"cake"
]
},
如您所见,关键字从字符串(它们的名称)中以数组形式返回。我希望将它们作为具有ID和值的键值对返回:
"keywords": [
"1":"birthday",
"3":"cake"
]
如果您知道如何使用我的序列化器执行此操作,将不胜感激:)
创建自定义序列化器:
class MyKeywordsField(serializers.RelatedField):
def to_native(self, value):
return { str(value.pk): value.name }
用它:
class ImageResourceSerializer(serializers.HyperlinkedModelSerializer):
keywords = MyKeywordsField(many=True)
# ...
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句