from rest_framework import serializers from .models import Users, AcademicProfile, ResearchGroup, GroupMembership class UsersGetSerializer(serializers.ModelSerializer): roles = serializers.SerializerMethodField() introduction = serializers.SerializerMethodField() avatar_url = serializers.SerializerMethodField() class Meta: model = Users fields = ['user_id','name', 'roles','avatar_url', 'introduction','create_time', 'update_time','email', 'phone', 'address'] def get_roles(self, obj): roles = [] if obj.roles == 'ADM': roles.append('admin') else: roles.append('editor') if obj.developer: roles.append('developer') return roles # return ['admin'] def get_introduction(self, obj): return 'I am a super administrator' def get_avatar_url(self, obj): if obj.avatar: # 返回绝对URL request = self.context.get('request') return request.build_absolute_uri(obj.avatar.url) return None class UsersPostSerializer(serializers.ModelSerializer): class Meta: model = Users fields = ['name', 'email', 'phone', 'address'] class AcademicProfileGetSerializer(serializers.ModelSerializer): user = UsersGetSerializer(read_only=True) class Meta: model = AcademicProfile fields = [ 'user','role', 'enrollment_year', 'graduation_year', 'department','major','research_tags','skill_tags'] class AcademicProfilePostSerializer(serializers.ModelSerializer): class Meta: model = AcademicProfile fields = [ 'role', 'enrollment_year', 'graduation_year', 'department','major','research_tags','skill_tags']