Reputation: 67
I have a Django app using Django rest framework as restful api.
I want to concatenate two fields after "ReadOnlyField(source= " in Serializer.py
Serializer.py:
class MaterialSerializer(serializers.ModelSerializer):
book = BookSerializer(many=False)
course = CourseSerializer(many=False)
school = serializers.ReadOnlyField(source='course.courseInfo.school.code', allow_null=True)
courseCode = serializers.ReadOnlyField(source='course.courseInfo.discipline_code'+'course.courseInfo.code') #I want to concatenate discipline_code and code, but seems like using "+" could not work
class Meta:
model = Material
fields = ['id', 'book', 'course', 'school', 'courseCode']
How could I concatenate discipline_code and code after "ReadOnlyField(source= "?
Upvotes: 1
Views: 1089
Reputation: 476813
You can work with a SerializerMethodField
[drf-doc] to provide the outcome of a method call:
class MaterialSerializer(serializers.ModelSerializer):
book = BookSerializer(many=False)
course = CourseSerializer(many=False)
school = serializers.ReadOnlyField(source='course.courseInfo.school.code', allow_null=True)
courseCode = serializers.SerializerMethodField()
def get_courseCode(self, obj):
return f'{obj.course.courseInfo.discipline_code} {obj.course.courseInfo.code}'
class Meta:
model = Material
fields = ['id', 'book', 'course', 'school', 'courseCode']
Here it thus will determine the courseCode
by calling the get_courseCode
and using the outcome of that call for the courseCode
item.
Upvotes: 1