我在一个序列化程序上有两个serializerMethodField。其中一个回来了对象somelist.count()很好。但我要求另一种方法返回目标人物列表[0]我收到一个TypeError“RelatedManager”对象不支持索引。任何建议都将不胜感激。 下面是一些代码:
class TripPlaceSerializer(serializers.ModelSerializer):
class Meta:
model = TripPlace
fields = ('trip', 'place', )
class StopSerializer(serializers.ModelSerializer):
class Meta:
model = TripPlace
fields = ('place', )
depth = 1
class TripSerializer(serializers.ModelSerializer):
stops = StopSerializer(read_only=True, many=True)
stops_count = serializers.SerializerMethodField()
car = CarSerializer(read_only=True, many=False)
origin = serializers.SerializerMethodField()
# final = serializers.SerializerMethodField()
class Meta:
model = Trip
fields = ('id', 'name', 'owner', 'car', 'stops_count', 'stops', 'origin', )
def get_stops_count(self, obj):
return obj.stops.count()
def get_origin(self, obj):
return obj.stops.first()
obj.somelist
是RelatedManager
,因为不管底层关系是什么,都不能直接索引它。您应该调用RelatedManager
的first
方法来获取第一个对象:或者,您可以使用不同于
^{pr2}$0
的不同索引索引(或切片)管理器的查询集:相关问题 更多 >
编程相关推荐