【发布时间】:2018-05-25 13:57:31
【问题描述】:
我试图为this (Google cache) 寻找解决方案
我只能想出这样的解决方案:
import json
from mptt.utils import tree_item_iterator
from rest_framework import generics
from rest_framework.response import Response
from .models import Category
def tree_family_items_to_json(instances):
data = ''
channel = '"{}"'.format(instances[0].channel.slug)
for category, structure in tree_item_iterator(instances):
if structure['new_level']:
data += '{'
else:
data += '],'
data += '"channel": {}'.format(channel)
data += '},{'
data += '"slug": "{}",'.format(category.slug)
data += '"name": "{}",'.format(category.name)
data += '"subcategories": ['
for level in structure['closed_levels']:
data += '],'
data += '"channel": {}'.format(channel)
data += '}'
return json.loads(data)
class CategoryFamily(generics.RetrieveAPIView):
lookup_field = 'slug'
queryset = Category.objects.all()
def retrieve(self, request, *args, **kwargs):
instances = self.get_object().get_family()
json_data = tree_family_items_to_json(instances)
return Response(json_data)
关键是我使用了来自 mptt 的tree_item_iterator,现在我正在寻找更花哨的东西。
它满足了一段时间的需要。但现在确定要多久。
有什么想法吗?
【问题讨论】:
标签: python django django-rest-framework django-mptt mptt