Drf: Получение связанных сообщений по категории ManyToMany и полю тегов
Я пытаюсь получить все связанные сообщения, получая id текущего сообщения и фильтруя через БД, чтобы найти сообщения, которые находятся в похожей категории или имеют похожие теги.
это модель для постов:
class Post(models.Model):
....
author = models.ForeignKey(
"users.User", on_delete=models.CASCADE, related_name='blog_posts')
tags = TaggableManager()
categories = models.ManyToManyField(
'Category')
....
status = models.IntegerField(choices=blog_STATUS, default=0)
def __str__(self):
return self.title
это файл views.py:
class RelatedPostsListAPIView(generics.ListAPIView):
serializer_class = PostsSerializer
queryset = BlogPost.objects.filter(
status=1)[:5]
model = BlogPost
def get(self, pk):
post = self.get_object(pk)
qs = super().get_queryset()
qs = qs.filter(
Q(categories__in=post.categories.all()) |
Q(tags__in=post.tags.all())
)
return qs
с этим кодом я получаю ошибку RelatedPostsListAPIView.get() got multiple values for argument 'pk', я не думаю, что я действительно получаю объект с id, любая помощь будет очень признательна.
Вы также должны захватить request в get(), поэтому измените:
class RelatedPostsListAPIView(generics.ListAPIView):
def get(self, pk):
# ...
to:
class RelatedPostsListAPIView(generics.ListAPIView):
def get(self, request, pk):
# ^^^ Add this