説明なし

serializers.py 1.5KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. from rest_framework import serializers
  2. from django.contrib.auth.models import User
  3. from .models import Profile, Opportunity, IntroductionRequest
  4. from django.contrib.auth.models import User
  5. class UserSerializer(serializers.ModelSerializer):
  6. class Meta:
  7. model = User
  8. fields = ['id', 'username', 'email']
  9. class ProfileSerializer(serializers.ModelSerializer):
  10. user = UserSerializer(read_only=True)
  11. tags = serializers.SerializerMethodField()
  12. class Meta:
  13. model = Profile
  14. fields = ['id', 'user', 'bio', 'interests', 'industry', 'is_verified', 'tags']
  15. def get_tags(self, obj: Profile):
  16. try:
  17. return list(obj.tags.names())
  18. except Exception:
  19. return []
  20. class OpportunitySerializer(serializers.ModelSerializer):
  21. class Meta:
  22. model = Opportunity
  23. fields = ['id', 'title', 'description', 'created_at']
  24. class IntroductionRequestSerializer(serializers.ModelSerializer):
  25. from_user = UserSerializer(read_only=True)
  26. to_user = UserSerializer(read_only=True)
  27. class Meta:
  28. model = IntroductionRequest
  29. fields = ['id', 'from_user', 'to_user', 'message', 'is_accepted', 'created_at']
  30. class LeaderRowSerializer(serializers.Serializer):
  31. rank = serializers.IntegerField()
  32. user_id = serializers.IntegerField(source='id')
  33. username = serializers.CharField()
  34. points = serializers.IntegerField(source='points_given')
  35. last_help_at = serializers.DateTimeField(allow_null=True)