Фильтрация, сортировка и поиск

При публикации одной из своих дневниковых записей пользователь @leo по ошибке вставил в текст поста свой почтовый индекс. В какой именно пост попала эта информация — он не помнит, но очень хочет удалить её из текста.

Помогите пользователю решить эту проблему и найти нужный пост через API. Почтовые индексы России состоят из 6 цифр. Такую последовательность в тексте легко обнаружить при помощи регулярного выражения.

Настройте поиск по текстам публикаций так, чтобы в качестве поисковых запросов можно было использовать регулярные выражения.

Подключите бэкенд SearchFilter к нужному view-классу в приложении api.

Поведение поиска может быть уточнено путем добавления различных символов к полям в search_fields. Вам нужно использовать символ, который разрешит использовать регулярные выражения.

Файл views.py:

from rest_framework import generics, permissions
from django_filters.rest_framework import DjangoFilterBackend
from rest_framework import filters

from posts.models import Post
from .serializers import PostSerializer
from .permissions import IsAuthorOrReadOnlyPermission


class PostList(generics.ListCreateAPIView):
    queryset = Post.objects.all()
    serializer_class = PostSerializer
    permission_classes = (permissions.IsAuthenticatedOrReadOnly,)
    filter_backends = (DjangoFilterBackend, filters.SearchFilter)
    search_fields = ('$text',) 

    def perform_create(self, serializer):
        serializer.save(author=self.request.user)


class PostDetail(generics.RetrieveUpdateDestroyAPIView):
    queryset = Post.objects.all()
    serializer_class = PostSerializer
    permission_classes = (IsAuthorOrReadOnlyPermission,)


Вы можете оставить комментарий, или Трекбэк с вашего сайта.

Оставить комментарий