Я использую приведенное ниже решение, чтобы проверить, просматривал ли пользователь сообщение.
Лучший способ сделать атрибут «просмотренным» для сообщений внутри группы пользователей?
и в django-rest-framework я создаю ListApiView для получения всех сообщений:
class PostListView(ListAPIView):
serializer_class = PostSerializer
permission_classes = (IsAuthenticated, )
pagination_class = PostListPagination
def get_queryset(self):
return Post.objects.filter(state='published').order_by('-created')
и сериализаторы:
class PostSerializer(serializers.ModelSerializer):
class Meta:
model = Post
fields= '__all__'
Теперь я хочу, чтобы для каждого сообщения в PostListView было указано логическое поле с именем «Просмотрено», чтобы показать, является ли пользователь, прошедший проверку подлинности, просмотревшим это сообщение.
как то так:
class PostSerializer(serializers.ModelSerializer):
viewed = serializers.BooleanField(read_only=True)
class Meta:
model = Post
fields= '__all__'
def check_is_viewed(current_user, post_instance):
# if user viewed this post:
viewed.value = True
# else:
viewed.value = False