将多对多关系的所有 id-s 的列表添加到 JSON 响应
Add a list of all id-s of a many to many relationship to the JSON response
我想将多对多关系的所有 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
所以我想要实现的是:我想要拥有 Employee
[=35 的所有 bosses
=] 在响应中,以及他们所有 id
-s 的附加列表,由 ;
分隔.
我已经尝试使用我创建的自定义文件,但由于某种原因,我不断收到以下错误。
AttributeError at /employees/
'Employee
' object has no attribute 'test
'
这个错误是什么意思,我该如何修复我的代码以提供 id
-s 的列表?
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"
)。
我想将多对多关系的所有 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
所以我想要实现的是:我想要拥有 Employee
[=35 的所有 bosses
=] 在响应中,以及他们所有 id
-s 的附加列表,由 ;
分隔.
我已经尝试使用我创建的自定义文件,但由于某种原因,我不断收到以下错误。
AttributeError at /employees/
'
Employee
' object has no attribute 'test
'
这个错误是什么意思,我该如何修复我的代码以提供 id
-s 的列表?
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"
)。