シリアライザに2つのSerializerMethodFieldがあります。それらのうちの1つがobj.somelist.count()を正常に返します。しかし、私はobj.somelist [0]を返す他のメソッドを要求しているところで、私はTypeError 'RelatedManager'オブジェクトを取得していますが、インデックス付けをサポートしていません。どんなアドバイスも大歓迎です。 はここにいくつかのコードです:Django Rest Framework SerializerMethodField 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()
' '' .first() '' 'は最初の停止インスタンスを返しますが、今度は、TripSerializerがちょうど深さ1である場所とTripとの間の結合テーブルを表すモデルが、" TripPlace "タイプのObjectを返しています直列化できません。更新されたコード^。以前はうまくいきました。 – alirk
@alirk申し訳ありませんが、答えが元の問題を解決した場合は、新しい質問をすることを検討することがあります。 –
あなたの助けをありがとう:) – alirk