简体   繁体   English

Django Rest Framework 对象没有属性 pk

[英]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.

相关问题 'collections.OrderedDict' 对象没有属性 'pk' - django rest 框架 - 'collections.OrderedDict' object has no attribute 'pk' - django rest framework 'dict'对象没有属性'pk'Django Rest API Framework - 'dict' object has no attribute 'pk' Django Rest API Framework Django REST 框架查询集 object 没有属性 pk - Django REST framework queryset object has no attribute pk Django Rest Framework-对象没有属性发布 - Django Rest Framework - object has no attribute post Django - AttributeError: 'NoneType' 对象没有属性 'pk' - Django - AttributeError: 'NoneType' object has no attribute 'pk' Django AttributeError: 'int' object 没有属性 'pk' - Django AttributeError: 'int' object has no attribute 'pk' Django REST框架:“ WSGIRequest”对象没有属性“ query_params” - Django REST framework: 'WSGIRequest' object has no attribute 'query_params' “请求”对象在 Django Rest Framework 中没有属性“pop”? - 'Request' object has no attribute 'pop' in Django Rest Framework? Django Rest Framework'QuerySet'对象没有属性'_meta' - django rest framework 'QuerySet' object has no attribute '_meta' Django REST框架:AttributeError:Serializer对象没有属性'Meta' - Django REST framework: AttributeError: Serializer object has no attribute 'Meta'
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM