gpt4 book ai didi

python - Django Rest Framework SerializerMethodField 类型错误 : "' RelatedManager' object does not support indexing"

转载 作者:太空宇宙 更新时间:2023-11-04 02:48:01 25 4
gpt4 key购买 nike

我在序列化器上有两个 SerializerMethodFields。其中之一返回 obj.somelist.count() 正常。但是在我要求其他方法返回 obj.somelist[0] 的地方,我得到了一个 TypeError 'RelatedManager' object does not support indexing。非常感谢任何建议。这是一些代码:

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.somelistRelatedManager,无论底层关系是什么,您都无法直接对其进行索引。您应该调用 RelatedManagerfirst 方法来获取第一个对象:

def get_origin(self, obj):
return obj.somelist.first()

或者您可以使用不同于 0 的不同索引来索引(或切片)管理器的查询集:

def get_origin(self, obj):
return obj.somelist.all()[ind]

关于python - Django Rest Framework SerializerMethodField 类型错误 : "' RelatedManager' object does not support indexing",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44607212/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com