如何解决如何使用 Django Rest Framework 有效地序列化 django-mptt?
serializers.py
class RecursiveField(serializers.Serializer):
def to_representation(self,value):
serializer = self.parent.parent.__class__(value,context=self.context)
return serializer.data
class CategorySerializer(serializers.ModelSerializer):
children = RecursiveField(many=True)
class Meta:
model = Category
fields=('id','title','description','children',)
它返回如下响应数据:
{
"id": 1,"title": "Bike","description": "","children": []
},{
"id": 2,"title": "Car","children": [
{
"id": 3,"title": "Honda","children": []
}
]
},{
"id": 3,"children": []
}
如上图,ID为3的category已经重复了。如果一个类别是某个类别的子项,那么我不希望它再次单独显示。 我想要这样的响应数据:
{
"id": 1,"children": []
}
]
}
有人可以帮我解决吗?
解决方法
你可以只归还根,所以只归根而不是父母的孩子,我就是这样做的。
class CategoryManager(TreeManager):
def viewable(self):
queryset = self.get_queryset().filter(level=0)
return queryset
在 Category
模型中。
objects = CategoryManager()
然后在 views
中我是这样使用的:
queryset = Category.objects.viewable()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。