我试图在我的Django REST API列表视图中显示我的递归类别模型。 现在就是这样:
"results": [
{
"pk": 3,
"title": "Test",
"category": 7,
},
...
]}
我想实现这样的目标:
"results": [
{
"pk": 3,
"title": "Test",
"category": [
{
"id": 5,
"name": "Cat",
"slug": "cat",
"child": [
{
"id": 7,
"name": "Parser",
"slug": "parser",
}
]
}
],
},
...
]}
我目前正在使用Django MPTT来创建分层模型。这是models.py中的类别:
class Category(MPTTModel):
name = models.CharField(max_length=50, unique=True)
parent = TreeForeignKey('self', null=True, blank=True, related_name='children', db_index=True, on_delete=models.SET_NULL)
slug = models.SlugField()
class MPTTMeta:
order_insertion_by = ['name']
class Meta:
unique_together = (('parent', 'slug',))
verbose_name = "Category"
verbose_name_plural = "Categories"
def get_slug_list(self):
try:
ancestors = self.get_ancestors(include_self=True)
except:
ancestors = []
else:
ancestors = [i.slug for i in ancestors]
slugs = []
for i in range(len(ancestors)):
slugs.append('/'.join(ancestors[:i + 1]))
return slugs
def __str__(self):
return self.name
我正在使用Django Rest Framework的通用视图来创建视图。在views.py中:
class CaseListCreateView(generics.ListCreateAPIView):
serializer_class = CaseSerializer
def get_queryset(self):
qs = Case.objects.filter(active=True)
query = self.request.GET.get("search")
if query is not None:
qs = qs.filter(Q(title__contains=query) | Q(text__contains=query)).distinct()
return qs
def perform_create(self, serializer):
serializer.save(user=self.request.user)
我已尝试using djangorestframework-recursive进行递归但没有运气。
任何帮助都会受到极大的关注! 感谢