我在序列化程序上有两个SerializerMethodFields。其中一个返回obj.somelist.count()就好了。但是我要求另一种方法返回obj.somelist [0]我得到一个TypeError' RelatedManager' object不支持索引。任何建议都非常感谢。 这是一些代码:
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()
答案 0 :(得分:2)
obj.somelist
是基础关系的RelatedManager
,您无法直接对其进行索引。您应该调用first
的{{1}}方法来获取第一个对象:
RelatedManager
或者您可以使用与def get_origin(self, obj):
return obj.somelist.first()
不同的不同索引来索引(或切片)管理器的查询集:
0