【发布时间】:2019-05-25 20:57:08
【问题描述】:
在 Django Rest Framework 中有很多关于 serializing GenericRelations 的问题,但是我有一个用例,我只想简单地返回 GenericRelation 字段中的对象计数,而不是序列化它们。我能找到的文档和现有问题并未涵盖这一点。
我认为这可能就像在自定义序列化器中返回 len(value) 一样简单,但这会产生以下抛出:
object of type 'GenericRelatedObjectManager' has no len()
我的失败尝试:
class ObjectCountSerializer(serializers.RelatedField):
"""
Return the count of related objects.
"""
def to_representation(self, value):
return len(value)
class PostListSerializer(serializers.ModelSerializer):
"""
Main serializers for the writings module
"""
author = MemberListSerializer(many=False, read_only=True)
comments = ObjectCountSerializer(read_only=True)
class Meta:
model = Post
fields = (
'id',
'slug',
'url',
'title',
'description',
'created',
'edited',
'author',
'comments'
)
lookup_field = 'slug'
extra_kwargs = {
'url': {'lookup_field': 'slug'}
}
我如何简单地返回关系中的对象数?
【问题讨论】: