1 回答

TA貢獻1811條經驗 獲得超6個贊
我認為您需要將您的ForeignKey關系更改為self, 以引用自身。此外,為了簡化實現,讓我們添加related_name='children'( doc ) 并將其設為 nullable( null=True) 以將其表示為根節點。
class Category(models.Model):
parent = models.ForeignKey('self', null=True, blank=True, related_name='children')
category_name = models.CharField(max_length=55,null=False, blank=False)
status = models.BooleanField(default=True)
然后我們可以做如下實現:
from django.forms.models import model_to_dict
def get_tree(category):
tree = model_to_dict(category, fields=['category_name', 'status', 'id'])
if category.children.all().exists():
children = list()
for child in category.children.all():
children.append(get_tree(child))
tree['children'] = children
return tree
final_tree = list()
for category in Category.objects.filter(parent__isnull=True):
final_tree.append(get_tree(category))
print(final_tree)
添加回答
舉報