class UserProfileSerializer(serializers.ModelSerializer): images = images_serializers.CountImageSerializer(many=True, read_only=True) # read_only? I'd use read_only when is a field that I will never ever ever update. """ I'd use read_only when is a field that I will never ever ever update. Required I will use when I will maybe update it but I don't have to do it with every request. For example the profile fields, many of them are optional when I'm updating because sometimes I want to update the name only and not update the email, so I will leave it required=false. What would be read only would be for example the 'file' field of and image since I want to make sure that I will never modify it. """ followers_count = serializers.ReadOnlyField() # -> https://www.django-rest-framework.org/api-guide/fields/#readonlyfield # -> 해당 필드는 수정하지 않겠움!! followings_count = serializers.ReadOnlyField() post_count = serializers.ReadOnlyField() class Meta: model = models.User fields = ( 'profile_image', 'username', 'name', 'bio', 'website', 'post_count', 'followers_count', 'followings_count', 'images', )
class UserProfileSerializer(serializers.ModelSerializer): images = images_serializers.CountImageSerializer(many=True, read_only=True) post_count = serializers.ReadOnlyField() followers_count = serializers.ReadOnlyField() following_count = serializers.ReadOnlyField() class Meta: model = models.User fields = ('profile_image', 'username', 'name', 'bio', 'website', 'post_count', 'followers_count', 'following_count', 'images')
class UserProfileSerializer(serializers.ModelSerializer): images = image_serizlizers.CountImageSerializer(many=True) class Meta: model = models.User fields = ( 'username', 'name', 'bio', 'website', 'post_count', 'followers_count', 'following_count', 'images', )
class UserProfileSerializer(serializers.ModelSerializer): images = images_serializers.CountImageSerializer(many=True, read_only=True) post_count = serializers.ReadOnlyField() followers_count = serializers.ReadOnlyField() following_count = serializers.ReadOnlyField() is_self = serializers.SerializerMethodField() is_following = serializers.SerializerMethodField() class Meta: model = models.User fields = ( 'id', 'profile_image', 'username', 'name', 'bio', 'website', 'post_count', 'followers_count', 'following_count', 'images', 'is_self', 'is_following' ) def get_is_self(self, user): if 'request' in self.context: request = self.context['request'] if user.id == request.user.id: return True else: return False return False def get_is_following(self, obj): if 'request' in self.context: request = self.context['request'] if obj in request.user.following.all(): return True return False
class UserProfileSerializer(serializers.ModelSerializer): images = images_serializers.CountImageSerializer(many=True, read_only=True) #부분적으로 업데이트하지 않을 필드가 있을 때 read_only를 사용한다. post_count = serializers.ReadOnlyField() followers_count = serializers.ReadOnlyField() following_count = serializers.ReadOnlyField( ) #ReadOnlyField는 수정하지 않고 읽기만 하겠다고 선언하는 것이다. class Meta: model = models.User fields = ( 'profile_image', 'username', 'name', 'bio', 'website', 'post_count', 'followers_count', 'following_count', 'images', )
class UserProfileSerializer(serializers.ModelSerializer): images = images_serialzers.CountImageSerializer(many=True, read_only=True) post_count = serializers.ReadOnlyField() followers_count = serializers.ReadOnlyField() following_count = serializers.ReadOnlyField() # ReadOnlyField는 Serializer 통해서 수정 불가능하게 해줌, 하지만 위의 # *_count는 함수로 계산된 결과라서 이 속성 없어도 수정이 안되는 것 같아 보임 class Meta: model = models.User fields = ( 'profile_image', 'username', 'name', 'bio', 'website', 'post_count', 'followers_count', 'following_count', 'images' )