You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django中通过API展示Trader类内容报错:'bool'对象不可迭代

问题分析与解决方案

错误根源

ModelViewSet的get_queryset方法要求返回可迭代的查询集(QuerySet),但你的代码里返回的是self.request.user.trader.bot_status——这是一个布尔值(bool类型),布尔值不属于可迭代对象,因此触发TypeError: 'bool' object is not iterable。


修复方案

方案1:改用单对象查询视图类(推荐)

如果你的API仅需返回当前用户的Trader信息,使用RetrieveAPIView更贴合场景(ModelViewSet是为多对象CRUD设计的):

修改views.py:

from rest_framework.generics import RetrieveAPIView

class BotStatusView(RetrieveAPIView):
    serializer_class = BotStatusSerializer
    
    def get_object(self):
        # 返回当前用户对应的Trader对象
        return self.request.user.trader

方案2:保留ModelViewSet并修正查询逻辑

若需保留ModelViewSet用于后续扩展,需让get_queryset返回包含当前用户Trader的查询集:

  1. 修改views.py的get_queryset方法:
def get_queryset(self):
    # 返回当前用户对应的Trader对象组成的查询集
    return Trader.objects.filter(user=self.request.user)
  1. 补充序列化器字段配置(原代码未明确指定序列化字段,可能导致返回内容缺失):
    修改serializers.py:
class BotStatusSerializer(serializers.ModelSerializer):
    user = serializers.ReadOnlyField(source='user.username')

    class Meta:
        model = Trader
        fields = ('user', 'bot_status')  # 明确指定需要返回的字段
        read_only_fields = ('bot_status', )

内容的提问来源于stack exchange,提问作者I'm TreaSUre

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 01:24:29