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

Django REST Framework 购物车接口报'Meal' object is not iterable错误

错误定位与原因

错误出现在serializers.py中的CartMealSerializer定义部分,具体原因如下:

  • 从模型定义可以看出,CartMeal的meal字段是单值外键,每个CartMeal实例只会关联单个Meal对象
  • 你在CartMealSerializer中对MealSerializer设置了many=True参数,该参数仅用于序列化多对象集合(如查询集、列表这类可迭代对象),序列化时会尝试遍历传入的对象
  • 空购物车状态下没有关联的CartMeal数据,不会触发MealSerializer的序列化逻辑,所以接口运行正常;一旦购物车加入商品,序列化单个Meal对象时,框架会尝试遍历这个不可迭代的单对象,就抛出了'Meal' object is not iterable错误。
修复方案

直接修改serializers.py中的CartMealSerializer,删除MealSerializer的many=True参数即可:

class CartMealSerializer(serializers.ModelSerializer):
    # 移除many=True参数
    meal = MealSerializer()

    class Meta:
        model = CartMeal
        fields = ['id', 'meal', 'qty', 'final_price']

内容的提问来源于stack exchange,提问作者nikitaex

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 14:09:03