Я создал несколько API блогов, но у меня возникла проблема.
В сериализаторе есть поле метода, которое возвращает запрос пользователю, понравился пост или нет. Проблема в том, что это поле попадает в пользовательскую БД при каждом возврате сообщения, что означает, что при возврате 1000 сообщений пользовательская БД будет попадать 1000 раз. Как я могу избежать этого? Первой идеей было назначить пользователю запроса что-то вроде глобальной переменной, но я не знаю, как это сделать.
это сериализатор
class DashboardSerializer(serializers.ModelSerializer):
image = serializers.ImageField(allow_null=True, use_url=True)
likes_count = serializers.SerializerMethodField(read_only=True)
tags = TagSerializer(many=True, read_only=True)
user_has_liked = serializers.SerializerMethodField(read_only=True)
owner = UserField(read_only=True)
comments = CommentsField(read_only=True, many=True, source='two_latest_comments')
comments_count = serializers.SerializerMethodField()
class Meta:
model = Blog
fields = ['id', 'title', 'owner', 'likes_count', 'user_has_liked',
'image', 'video', 'tags', 'get_elapsed_time_after_created',
'comments', 'comments_count']
ordering = ['created_at']
def get_likes_count(self, instance):
return instance.likes.count()
def get_user_has_liked(self, instance):
request = self.context.get('request')
***return instance.likes.filter(pk=request.user.pk).exists()***
*******request.user.pk hits the DB.*********
def get_comments_count(self, instance):
return instance.comments.count()
Заранее спасибо.