django - TypeError:“ShiftSerializer”对象不可调用
问题描述
我正在尝试使用 ModelViewSet。我现在面临这个错误
这是我的观点=>
class ShiftViewSet(viewsets.ModelViewSet):
queryset = Shift.objects.all()
serializer_class = ShiftSerializer()
# filter_backends = (filters.DjangoFilterBackend,)
# filterset_fields = ('shiftid',)
@action(methods=['get'], detail=False)
def newest(self, request):
newest = self.get_queryset().order_by('Created_DT').last()
serializer = self.get_serializer_class()(newest)
return Response(serializer.data)
@action(methods=['get'], detail=False)
def shiftsum(self, request):
query = (
Shift.objects.values('shiftid')
.annotate(shiftdesc=Max('shiftdesc'))
.annotate(overnight=Max('overnight'))
.annotate(isspecialshift=Max('isspecialshift'))
.annotate(ct=Count('*')) # get count of rows in group
.order_by('shiftid')
.distinct()
)
serializer = ShiftSummarySerializer(query,many=True)
return Response(serializer.data)
@action(methods=['get'], detail=False)
def byshiftid(self, request):
shiftid = self.request.query_params.get('shiftid',None)
query = self.get_queryset().filter(shiftid=shiftid)
serializer = ShiftSerializer(query,many=True)
return Response(serializer.data)
这是我的路由器和网址 =>
router.register('shifts_mas', ShiftViewSet, base_name='shifts')
path('api/', include(router.urls))
通常我可以像 /api/shifts_mas/ 这样调用,我会得到所有记录,shift
但刚才我收到了这个错误,我不知道为什么。我可以知道为什么吗?
解决方案
您应该有一个序列化程序类而不是该类的实例作为您的serializer_class
属性
serializer_class = ShiftSerializer # No parenthesis here
推荐阅读
- python - 使用 Selenium 和 Python 无法单击按钮
- php - Informix 从其他查询生成查询(评估结果到 SELECT) - PHP 和 Informix
- java - for 循环中的 Microsoft SQL Server Prepared 语句不起作用
- python - 在 docker 中使用 DataStax cassandra 驱动程序出现无效标头错误
- docker - Docker 无法使用复制命令找到文件或目录
- java - JFX 将图像向上和向下缩放到父级
- javascript - jQuery 表单数据传递为空
- .net - 将 .Net 应用程序(完整的 .Net 框架)移动到 aws?
- python - 编码没有分类等级/顺序的分类变量?
- asp.net - 有没有办法从 MVC 过滤器再次运行请求