serializers.py 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. from rest_framework import serializers
  2. from .models import Users, AcademicProfile, ResearchGroup, GroupMembership
  3. class UsersGetSerializer(serializers.ModelSerializer):
  4. roles = serializers.SerializerMethodField()
  5. introduction = serializers.SerializerMethodField()
  6. avatar_url = serializers.SerializerMethodField()
  7. class Meta:
  8. model = Users
  9. fields = ['user_id','name', 'roles','avatar_url', 'introduction','create_time', 'update_time','email', 'phone', 'address']
  10. def get_roles(self, obj):
  11. roles = []
  12. if obj.roles == 'ADM':
  13. roles.append('admin')
  14. else:
  15. roles.append('editor')
  16. if obj.developer:
  17. roles.append('developer')
  18. return roles
  19. # return ['admin']
  20. def get_introduction(self, obj):
  21. return 'I am a super administrator'
  22. def get_avatar_url(self, obj):
  23. if obj.avatar:
  24. # 返回绝对URL
  25. request = self.context.get('request')
  26. return request.build_absolute_uri(obj.avatar.url)
  27. return None
  28. class UsersPostSerializer(serializers.ModelSerializer):
  29. class Meta:
  30. model = Users
  31. fields = ['name', 'email', 'phone', 'address']
  32. class AcademicProfileGetSerializer(serializers.ModelSerializer):
  33. user = UsersGetSerializer(read_only=True)
  34. class Meta:
  35. model = AcademicProfile
  36. fields = [ 'user','role', 'enrollment_year', 'graduation_year', 'department','major','research_tags','skill_tags']
  37. class AcademicProfilePostSerializer(serializers.ModelSerializer):
  38. class Meta:
  39. model = AcademicProfile
  40. fields = [ 'role', 'enrollment_year', 'graduation_year', 'department','major','research_tags','skill_tags']