[英]Django Rest Framework object has no attribute pk
I am working in Django / DjangoRestFramework trying to use extra actions to build out a foreignkey that is routable.我在 Django / DjangoRestFramework 中工作,尝试使用额外的操作来构建可路由的外键。 I am getting the following error, I believe it has something to do with the create method on the FinancialsSerializer
, or lack thereof, but I am not sure我收到以下错误,我相信它与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()
FinancialsSerializer财务序列化程序
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"]
I see a couple of issues in your code.我在您的代码中看到了几个问题。
First, for GET
method:首先,对于GET
方法:
serializer = FinancialsSerializer(financials, many=True)
return Response(serializer.data)
Second, for POST
method:二、对于POST
方法:
serializer = FinancialsSerializer(data=request.data)
serializer.is_valid(raise_exception=True)
serializer.save()
return Response(serializer.data)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.