При публикации одной из своих дневниковых записей пользователь @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,)