Django Rest框架对象没有属性pk

2024-10-03 23:25:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我在Django/DjangoRestFramework中工作,试图使用额外的操作来构建一个可路由的外键。我得到了下面的错误,我相信它与FinancialsSerializer上的create方法有关,或者没有,但是我不确定

web_1  | AttributeError: 'dict' object has no attribute 'pk'

stocks.viewset

   19 class StockViewSet(viewsets.ModelViewSet):
   20     queryset = Stock.objects.all()
   21     serializer_class = StockSerializer
   22     lookup_url_kwarg = "ticker"
   23     lookup_field = "ticker__iexact"
   24
   25     @action(detail=True, methods=["POST", "GET"])
   26     def financials(self, request, ticker=None):
   27         if request.method == "GET":
   28             stock = self.get_object()
   29             financials = stock.get_financials()
   30             financials = FinancialsSerializer(financials)
   31             return Response(financials.data)
   32         if request.method == "POST":
   33             serializer = FinancialsSerializer(request.data)
   34             financials = Financials.objects.create(serializer.data)
   35             financials.save()

财务连载器

  9 class FinancialsSerializer(WritableNestedModelSerializer):
 10     balance_sheet = BalanceSheetSerializer()
 11     income_statement = IncomeStatementSerializer()
 12     cashflows_statement = CashflowsStatementSerializer()
 13
 14     class Meta:
 15         model = Financials
 16         fields = ["balance_sheet", "income_statement", "cashflows_statement"]

Tags: selfdatagetobjectsobjectrequestcreatelookup
1条回答
网友
1楼 · 发布于 2024-10-03 23:25:33

我在你的代码中看到了几个问题

首先,对于GET方法:

serializer = FinancialsSerializer(financials, many=True)
return Response(serializer.data)

第二,对于POST方法:

serializer = FinancialsSerializer(data=request.data)
serializer.is_valid(raise_exception=True)
serializer.save()
return Response(serializer.data)

相关问题 更多 >