【发布时间】:2016-04-05 10:02:17
【问题描述】:
我有两个模型,例如:
class Car(models.Model):
name = models.CharField(max_length=255)
class CarImage(models.Model):
car = models.ForeignKey(Car, related_name='photos')
photo = models.ImageField(upload_to='car/')
我想从上面的模型中获取汽车的所有图像。所以我写我的 serailzer 如下:
class CarSerializer(serializers.ModelSerializer):
"""
"""
_id = serializers.ReadOnlyField(source='pk')
photos = serializers.RelatedField(many=True, read_only=True)
class Meta:
model = Car
fields = ('my_field_here', )
class CarImageSerializer(serializers.ModelSerializer):
"""
"""
_id = serializers.ReadOnlyField(source='pk')
class Meta:
model = CarImage
fields = ('my_field_here', )
但在CarSerializer 序列化程序照片字段中出现此错误RelatedField.to_representation() must be implemented for field . If you do not need to support write operations you probably want to subclassReadOnlyFieldinstead.
但是 id 我使用 PrimaryKeyRelatedField 而不是 RelatedField 然后它工作正常,我正在获取主键列表,但我想要所有字段。
我也尝试使用CarImageSerializer
在Carserializer 声明
assets_keys = serializers.SerializerMethodField()
def get_assets_keys(self, obj):
return AssetKeySerializer(obj.asset_keys.all(), context=self.context).data
但它不能序列化资产键列表,它需要单个对象。
所以我的问题是是否可以使用序列化程序获取相关对象数据。如果是,我需要在我的序列化程序中更正什么?
我的回复一定是这样的:
[
{
"_id": 1,
"name": "first",
"photos": [
"name":"xyz",
"photo":"path_to_photo"
]
},
{
"_id": 1,
"name": "second",
"photos": [
"name":"abcddd",
"photo":"path_to_photo"
]
},
]
【问题讨论】:
标签: python django django-rest-framework