Как составить список сообщений блога конкретного пользователя в Django REST Api - PullRequest
1 голос
/ 17 октября 2019

Как вывести список сообщений блога определенного пользователя.

с помощью ListAPIView, все записи блога будут перечислены. Как составить список сообщений блога конкретного пользователя?

views.py

class BlogList(generics.ListAPIView):
    queryset = models.Blog.objects.all()
    serializer_class = serializers.BlogSerializer

serializers.py

class BlogSerializer(serializers.ModelSerializer):

    class Meta:
        fields = ('id', 'user_id', 'title', 'content', 'created_at',)
        model = models.Blog

urls.py

path('', views.BlogList.as_view()),

Ответы [ 2 ]

2 голосов
/ 17 октября 2019

Какой пользователь? текущий пользователь? Или любой другой пользователь?

Если какой-либо пользователь, текущий или другой, то вы можете сделать это:

class BlogList(generics.ListAPIView):
    serializer_class = serializers.BlogSerializer

    def get_queryset(self):
        return Blog.objects.filter(user_id=self.kwargs['user_id'])

И в urlconf или urls.py:

# Make sure you are passing the user id in the url.
# Otherwise the list view will not pick it up.
path('<int:user_id>', views.BlogList.as_view()),

Так что URL вроде этого: 'app_name / user_id /' должен дать вам список всех блогов, принадлежащих пользователю с user_id.

Кроме того, вы можете узнать намного больше, посетив предоставленную страницуот luizbag.

0 голосов
/ 17 октября 2019

Вам нужно сделать запрос, используя пользователя в качестве фильтра.

В вашем классе BlogList:

class BlogList(generics.ListAPIView):
    queryset = models.Blog.objects.filter(user_id = self.request.user.id)
    serializer_class = serializers.BlogSerializer

Проверьте эту ссылку для справки: https://www.django -rest-framework.org / апи-гид / фильтрация / # фильтрации-против-текущего-пользователя

...