Объекты не удаляются - PullRequest
0 голосов
/ 22 марта 2020

У меня есть несколько ViewSets. У них есть один сериализатор и модель. Например - ViewSet «Посты» и «Избранное». Если я использую запрос DELETE на объекте Post, он удаляется из «Posts», но в избранном я их вижу. НО, у каждого объекта есть поле «URL». Итак, если какой-либо объект из «Сообщений» будет удален, то в «Избранное» я его увижу, а если я go на ссылку из поля «URL», то получу «404 не найден».

Почему это происходит?

Модель:

class Post(models.Model):
    name = models.CharField(verbose_name='name', db_index=True, max_length=64)
    city = models.CharField(verbose_name='city', db_index=True, max_length=64)
    created = models.DateTimeField(auto_now_add=True)
    end_time = models.DateTimeField(default=next_month, blank=True, editable=False)
    description = models.CharField(verbose_name='description', db_index=True, max_length=64)
    isFan = models.BooleanField(null=True)
    main_image = models.ImageField(upload_to=get_auth_dir_path, null=True, max_length=255)
    first_image = models.ImageField(upload_to=get_auth_dir_path, null=True, max_length=255)
    second_image = models.ImageField(upload_to=get_auth_dir_path, null=True, max_length=255)

ViewSets:

class PostViewSet(LikedMixin, viewsets.ModelViewSet):
    queryset = Post.objects.is_actual().order_by('-created')
    serializer_class = PostSerializer
    authentication_classes = (TokenAuthentication, SessionAuthentication, )
    filter_backends = (DjangoFilterBackend, )
    filterset_fields = (...)


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


class ClosedPostViewSet(LikedMixin, viewsets.ModelViewSet):
    queryset = Post.objects.is_not_actual().order_by('-end_time')

    serializer_class = PostSerializer
    authentication_classes = (TokenAuthentication, SessionAuthentication,)
    filter_backends = (DjangoFilterBackend,)
    filterset_fields = (...)

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


class SearchViewSet(LikedMixin, viewsets.ModelViewSet):
    pagination_class = None
    queryset = Post.objects.is_actual()
    serializer_class = PostSerializer
    authentication_classes = (TokenAuthentication, SessionAuthentication, )
    filter_backends = (DjangoFilterBackend, )
    filterset_fields = (...)

    def list(self, request, *args, **kwargs):
        queryset = self.filter_queryset(self.get_queryset())
        result_list = list(queryset.values('city').annotate(count=Count('city')))
        return Response(result_list)

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