我想将多对多关系的所有 id
-s添加到我的序列化JSON响应中。
class TestField(serializers.Field):
def to_native(self, value):
list = []
for boss in value.all():
list.append(value).append(';')
return list
class EmployeeSerializer(serializers.HyperlinkedModelSerializer):
test = TestField('test')
class Meta:
model = Employee
fields = ('id', 'test', 'bosses')
depth = 1
所以我想要实现的目标是:我希望在响应中包含 bosses
的所有 Employee
,以及其他 id
-s的附加列表,以 ;
分隔。
我已尝试使用我创建的自定义文件,但由于某种原因,我不断收到以下错误。
/ employees /
中的AttributeError'
Employee
'对象没有属性'test
'
此错误的含义是什么?如何修复我的代码以列出 id
-s?
答案 0 :(得分:1)
Django REST框架provides a PrimaryKeyRelatedField
,它允许您将关系序列化为主键列表,这听起来与您正在寻找的完全一样。
class EmployeeSerializer(serializers.HyperlinkedModelSerializer):
test = serializers.PrimaryKeyRelatedField(
read_only=True,
many=True,
source='relation'
)
class Meta:
model = Employee
fields = ('id', 'test', 'bosses')
depth = 1
这会将主键列表序列化为test
。主键与employee.relation.all()
返回的对象的主键相同(因为the source
is set to "relation"
)。