【发布时间】:2016-05-19 01:18:28
【问题描述】:
我有一个Cart 模型和一个CartItem 模型。 CartItem 模型有一个 ForeignKey 到 Cart 模型。
使用 Django Rest Framework 我有一个视图,API 用户可以在其中显示Cart,显然我想在响应中包含CartItem。
我这样设置我的序列化器:
class CartSerializer(serializers.ModelSerializer):
user = UserSerializer(read_only=True)
cartitem_set = CartItemSerializer(read_only=True)
class Meta:
model = Cart
depth = 1
fields = (
'id',
'user',
'date_created',
'voucher',
'carrier',
'currency',
'cartitem_set',
)
我的问题是第二行,cartitem_set = CartItemSerializer(read_only=True)。
我收到 AttributeErrors 说 'RelatedManager' object has no attribute 'product'。 ('product' 是CartItem 模型中的一个字段。如果我从CartItemSerializer 中排除产品,我只会得到一个带有下一个字段的新 AttributeError ,我会报错。
我的猜测是,出于某种原因,Django REST 框架不支持添加序列化程序来反转这样的关系。我错了吗?我该怎么做?
PS
我之所以要使用CartItemSerializer(),是因为我想控制响应中显示的内容。
【问题讨论】:
-
试试
cartitem_set = CartItemSerializer(read_only=True, many=True) -
你的 CartItem 模型外键是什么样的?
标签: django rest django-rest-framework