I want to get the output of one serializer 'RoomSerializer' into 'JoinRoomSerializer's fields.
I have tried to get the 'RoomSerializer' as a variable into 'JoinRoomSerializer' and then pass it in 'fields', but im getting the following error: Got AttributeError when attempting to get a value for field room_extends
on serializer JoinedRoomSerializer
.
The serializer field might be named incorrectly and not match any attribute or key on the UserRoom
instance.
Original exception text was: 'UserRoom' object has no attribute 'room_extends'.
The Room model has field name and JoinRoom model has foreign key to room
My serializers:
class RoomSerializer(serializers.ModelSerializer):
"""Serializer for displaying all fields of the Room"""
class Meta():
model = Room
fields = ['name']
class JoinedRoomSerializer(serializers.ModelSerializer):
"""Serializer for displaying the following fields of the joined UserRoom table"""
room_extends = RoomSerializer(many=True)
class Meta():
model = UserRoom
fields = ['room_extends', 'date_joined']
You are using ModelSerializer
so you in Meta class you have to specify fields that your model has. I am almost sure in your case foreign key field is not named room_extends and this cases the error
class RoomSerializer(serializers.ModelSerializer):
"""Serializer for displaying all fields of the Room"""
class Meta():
model = Room
fields = ['name']
class JoinedRoomSerializer(serializers.ModelSerializer):
"""Serializer for displaying the following fields of the joined UserRoom table"""
room = RoomSerializer(many=True) # name of variable same as in UserRoom model
class Meta():
model = UserRoom
fields = ['room', 'date_joined']
Or you can use source
class RoomSerializer(serializers.ModelSerializer):
"""Serializer for displaying all fields of the Room"""
class Meta():
model = Room
fields = ['name']
class JoinedRoomSerializer(serializers.ModelSerializer):
"""Serializer for displaying the following fields of the joined UserRoom table"""
room_extends = RoomSerializer(many=True, source='room') # room or whatever is foreignkey field name
class Meta():
model = UserRoom
fields = ['room_extends', 'date_joined']