Django mptt介绍以及使用

阅读: 评论:0

Django mptt介绍以及使用

Django mptt介绍以及使用

Django mptt介绍以及使用

Django mptt介绍以及使用 - 剁椒芋头 - 博客园

Django mptt介绍以及使用 

Django mptt是个Django第三方组件,目标是使Django项目能在数据库中存储层级数据(树形数据)。它主要实现了修改过的前序遍历算法,如果你对原理还不是很了解,可以看我的这篇文章。当然,使用mptt时,原理是可以不用了解的,因为具体的实现细节都已经隐藏。不过,如果项目不是使用的Django,可以参考具体的实现原理。

在整篇文章中,我们将会拿《在数据库中存储层级结构》中的例子作为本文的例子。我们打算在数据库中存储这张图中的数据:

在介绍mptt之前,如果你的需求仅仅是像这样显示以上数据:

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 < li >Food      < ul >          < li >Fruit          < ul >              < li >Red              < ul >                 < li >Cherry</ li >              </ ul >              </ li >              < li >Yellow              < ul >                 < li >Banana</ li >              </ ul >              </ li >          </ ul >          </ li >          < li >Meat          < ul >              < li >Beef</ li >              < li >Pork</ li >          </ ul >          </ li >      </ ul > </ li >

mptt就显得大材小用了,因为Django已经有内置模板过滤器来完成这个工作:unordered_list(官方文档)。如果你的需求不只这么简单,那就跳过这一段。不过这里还是要讲解一下unordered_list的做法。我们就来实现以上的结果。

 

当然我们首先要写一个简单的Model。

?
1 2 3 4 5 6 7 8 from django.db import models class Food(models.Model):      title = models.CharField(max_length = 50 )      parent = models.ForeignKey( "self" , blank = True , null = True , related_name = "children" )            def __unicode__( self ):          return self .title
posted on 2013-01-05 09:00  lexus 阅读( ...) 评论( ...) 编辑 收藏

转载于:.html

本文发布于:2024-02-02 05:47:14,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170682403541759.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:Django   mptt
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23