首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何选择django模型的实例来更新该模型或相关模型中的信息?

如何选择django模型的实例来更新该模型或相关模型中的信息?
EN

Stack Overflow用户
提问于 2022-07-14 17:45:51
回答 1查看 37关注 0票数 1

我基本上有三个模特。

代码语言:javascript
复制
class Users(models.Model):
    name = models.CharField(max_length=100)
    ...
代码语言:javascript
复制
class Portfolio(models.Model):
    name = models.CharField(max_length=50)
    user = models.ForeignKey(Users, on_delete=models.CASCADE, related_name='portfolio')
代码语言:javascript
复制
class BuySell(models.Model):
    portfolio = models.ForeignKey(Portfolio, on_delete=models.CASCADE, related_name='buy_sell'
    ...

任何用户都可以有多个投资组合,投资组合可以有很多买卖。如何从我的视图中访问用户选择的添加买卖数据的投资组合实例?

在我看来:

代码语言:javascript
复制
class BuySellViewSet(
        viewsets.GenericViewset, 
        mixins.ListModelMixin,
        mixins.CreateModelMixin,
        mixins.UpdateModelMixin,
        mixins.DestroyModelMixin
    ):
    
    serializer_class = BuySellSerializer
    queryset = BuySell.objects.all()
 
    def get_queryset(self):
        return self.request.user.portfolio

但是,当我为单个用户添加多个组合时,会得到以下错误消息:

代码语言:javascript
复制
TypeError at /api/v1/share/buy-sell/
Field 'id' expected a number but got <django.db.models.fields.related_descriptors.create_reverse_many_to_one_manager.<locals>.RelatedManager object at 0x7f857c7c6940>.

如何选择正确的投资组合实例以在该实例中添加买卖数据?另外,我是如何在一个投资组合的例子中添加新的买卖记录的呢?

代码语言:javascript
复制
def create(self, request, *args, **kwargs):
        serializer = self.get_serializer(data=request.data)
        serializer.is_valid(raise_exception=True)
        share = serializer.validated_data["share"]
        self.perform_create(serializer)
        return Response({"data": serializer.data}, status=status.HTTP_201_CREATED)
EN

Stack Overflow用户

发布于 2022-07-14 17:49:10

您可以通过以下方式进行过滤:

代码语言:javascript
复制
class BuySellViewSet(
        viewsets.GenericViewset, 
        mixins.ListModelMixin,
        mixins.CreateModelMixin,
        mixins.UpdateModelMixin,
        mixins.DestroyModelMixin
    ):
    
    serializer_class = BuySellSerializer
 
    def get_queryset(self):
        return BuySell.objects.filter(portfolio__user=self.request.user)
票数 2
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72984667

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档