serializers.py 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  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. # return obj.roles.all()
  12. return ['admin']
  13. def get_introduction(self, obj):
  14. return 'I am a super administrator'
  15. def get_avatar_url(self, obj):
  16. if obj.avatar:
  17. # 返回绝对URL
  18. request = self.context.get('request')
  19. return request.build_absolute_uri(obj.avatar.url)
  20. return None
  21. class UsersPostSerializer(serializers.ModelSerializer):
  22. class Meta:
  23. model = Users
  24. fields = ['name', 'email', 'phone', 'address']
  25. class AcademicProfileGetSerializer(serializers.ModelSerializer):
  26. user = UsersGetSerializer(read_only=True)
  27. class Meta:
  28. model = AcademicProfile
  29. fields = ['user', 'degree', 'department', 'university', 'advisor', 'thesis_title', 'thesis_abstract', 'thesis_keywords']