У меня есть несколько 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)