Нужен ли нам набор запросов в CreateAPIView?
Мой вопрос довольно прост. На самом деле я не уверен, что queryset необходим для CreateAPIView или нет...
class CreateNotificationAPIView(generics.CreateAPIView):
"""This endpoint allows for creation of a notification"""
queryset = Notification.objects.all() #can we remove it, if we do so, will we face any issue in future ?
serializer_class = serializers.NotificationSerializer
согласно REST_docs
queryset - Набор queryset, который должен использоваться для возврата объектов из данного представления. Как правило, вы должны либо установить этот атрибут, либо переопределить метод get_queryset(). Если вы переопределяете метод представления, важно важно, чтобы вы вызывали get_queryset(), а не обращались к этому свойству свойству напрямую, так как queryset будет оценен один раз, и эти результаты будут кэшироваться для всех последующих запросов.
Нет. Единственный метод HTTP, который предлагает CreateAPIView
[drf-doc] - это метод POST, и он реализует его, вызывая метод create
. Метод .create(…)
реализован как [GitHub]:
def create(self, request, *args, **kwargs): serializer = self.get_serializer(data=request.data) serializer.is_valid(raise_exception=True) self.perform_create(serializer) headers = self.get_success_headers(serializer.data) return Response(serializer.data, status=status.HTTP_201_CREATED, headers=headers)
Эти методы работают только с сериализатором, или с self.perform_create
и self.get_success_headers
, которые по умолчанию работают только с данными сериализатора.
Если вы таким образом не переопределите методы CreateAPIView
, чтобы как-то использовать кверисет, вы можете определить CreateAPIView
без определения queryset
или переопределить get_queryset
.