如何解决Django Rest Framework使用Extra Actions使外键数据可路由
我有两个模型,每个模型都在不同的应用程序中。股票模型通过外键关系引用财务模型,如下所示。使用当前的Stock Viewset(也在下面显示),我可以通过localhost:8000 / stocks / aapl访问单个股票,但是我想扩展该URL以包括财务外键数据,例如localhost:8000 / stocks / AAPL /金融/资产负债表/。有人告诉我要使用Extra Actions,我已经举报过并张贴在下面,但没有运气。
任何线索如何做到这一点?
class Stock(models.Model):
id = models.UUIDField(default=uuid.uuid4,editable=False,unique=True)
ticker = models.CharField(max_length=10,unique=True,primary_key=True)
slug = models.SlugField(default="",editable=False)
financials = models.OneToOneField(
Financials,on_delete=models.CASCADE,default=None
)
def get_financials(self):
return self.financials
财务模型
class Financials(models.Model):
# ticker = models.ForeignKey(
# Stock,related_name="balance_sheets"
# )
balance_sheet = models.ForeignKey(
BalanceSheet,related_name="balance_sheets"
)
income_statement = models.ForeignKey(
IncomeStatement,related_name="income_statements"
)
cashflows_statement = models.ForeignKey(
CashflowsStatement,related_name="cashflows_statements",default=None,)
stocks.views.py
class StockViewSet(viewsets.ModelViewSet):
queryset = Stock.objects.all()
serializer_class = StockSerializer
lookup_url_kwarg = "ticker"
lookup_field = "ticker__iexact"
@action(detail=True,methods=['post','get'])
def financials(self,request,ticker=None):
stock = self.get_object()
financials = stock.get_financials()
return Response({financials})
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。