我的問題很直接。我實際上不確定 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
uj5u.com熱心網友回復:
沒有。CreateAPIView[drf-doc]提供的唯一 HTTP 方法是 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以某種方式覆寫 the 的方法以使用查詢集,您可以定義 aCreateAPIView而不定義 aqueryset或 override get_queryset。
uj5u.com熱心網友回復:
根據REST_docs
queryset - 應用于從此視圖回傳物件的查詢集。通常,您必須設定此屬性,或覆寫 get_queryset() 方法。如果您要覆寫視圖方法,請務必呼叫 get_queryset() 而不是直接訪問此屬性,因為 queryset 將被評估一次,并且這些結果將被快取以供所有后續請求使用。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/395939.html
