Ich habe zwei SerializerMethodFields auf einem Serializer. Einer von ihnen gibt obj.somelist.count() in Ordnung zurück. Aber wo ich die andere Methode frage, obj.somelist [0] zurückzugeben, bekomme ich ein TypeError 'RelatedManager'-Objekt unterstützt keine Indizierung. Jeder Rat wird sehr geschätzt. Hier einige Code:Django Rest Framework SerializerMethodField TypeError: "'RelatedManager'-Objekt unterstützt keine Indizierung"
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()
' '' first() '' 'gibt die Instanz des ersten Stopps zurück, aber jetzt gibt das Modell, das die Join-Tabelle zwischen einem Trip und einer Stelle darstellt, die der StopSerializer gerade mit einer Tiefe von 1 ist, das Objekt vom Typ" TripPlace "zurück nicht serialisierbar. Aktualisierter Code ^. Es wurde vorher gut gerendert. – alirk
@alirk Entschuldigung, wenn die Antwort dein ursprüngliches Problem behebt, kannst du vielleicht nach einem neuen fragen. –
Danke für Ihre Hilfe :) – alirk