python生成无限级树形菜单json
models.py
class Fl(models.Model):
flxh = models.AutoField(u’分类序号’,primary_key=True)
flmc = models.CharField(u’分类名称’,max_length=255)
flbm = models.ForeignKey(“self”,verbose_name=u’上级分类’,blank=True, null=True, related_name=“children”)
from .models import *
from django.shortcuts import HttpResponse
def CkbZzflListTree(request):
queryset =Fl.objects.filter(flbm=None)
tt=[]
var= display(queryset,tt)
var=replaceMore(var)
return HttpResponse(var))
def display(foods,hh):
for food in foods:
m=food.flmc.decode(‘utf8’)
hh.append("{“flxh”:"+str(food.flxh)+",“flmc”:""+m+""")
children= food.children.all()
if len(children) >= 1:
hh.append(",“children”:[")
hh=(display(children,hh))
hh.append("]}")
else:
hh.append("}")
return hh
def replaceMore(var):
var=’’.join(var)
if ( var.find(’,}’)!=-1):
vartt0= var.split(’,}’)
var="}".join(vartt0)
if ( var.find(’}{’)!=-1):
varrv=var.split(’}{’)
var="},{".join(varrv)
if ( var.find(’,]’)!=-1):
varrv1=var.split(’,]’)
var="]".join(varrv1)
if ( var.find(’"{’)!=-1):
varrv11=var.split(’"{’)
var="{".join(varrv11)
if ( var.find(’},]’)!=-1):
varrv10=var.split(’},]’)
var="}]".join(varrv10)
var=var.replace("},]","}]")
return var