【问题标题】:django rest framework saving M2M relationdjango rest框架保存M2M关系
【发布时间】:2018-07-25 12:32:14
【问题描述】:

我正在尝试创建具有 m2m 关系的购物车,在保存此对象时,序列化程序会引发两个奇怪的异常,如果我将关系更改为一对多,一切正常!

AttributeError:尝试在序列化程序 ItemSerializer 上获取字段 quantity 的值时出现 AttributeError。 序列化程序字段可能命名不正确,并且与 BranchItemList 实例上的任何属性或键都不匹配。 原始异常文本为:“BranchItemList”对象没有“数量”属性。

/api/carts/29 处的 AttributeError 尝试在序列化程序 ItemSerializer 上获取字段 item_list 的值时出现 AttributeError。 序列化程序字段可能命名不正确,并且与 BranchItemList 实例上的任何属性或键都不匹配。 原始异常文本为:“BranchItemList”对象没有属性“item_list”。

我的意见:

{
    "items":[
        {"item_list":350,"price":10,"quantity":20},
        {"item_list":300,"price":10,"quantity":20}
        ]
}

型号:

序列化器:

【问题讨论】:

  • 用代码替换你的图片。

标签: django django-models django-rest-framework


【解决方案1】:

由于您将through 模型用于M2M,因此您实际上需要在序列化程序中使用ItemCart 模型,但购物车的items M2M 管理器返回BranchItemList。要修复错误,请指定 source='itemcart_set':

class CartSerializer(serializers.ModelSerializer):
    items = ItemSerializer(source='itemcart_set', many=True)

【讨论】:

  • 实际上你让我很开心,但我尝试了一些奇怪的东西,我打开调试器来跟踪问题,每次代码在调试模式下运行时,它都按预期工作,切换到开发模式后它失败了。
猜你喜欢
  • 1970-01-01
  • 2017-02-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-30
  • 2018-06-18
  • 1970-01-01
  • 2017-03-17
相关资源
最近更新 更多