文章目錄
在Web开发中,省/市/区(县)是经常需要用到的数据,而省/市/区(县)是一种层级关系。在使用Django做Web开发时,此时Django-mptt是一个很有用的模块。
首先执行pip install django-mptt
安装django-mptt模块如test-django中示例那样,建立area应用,在area的models.py里添加如下model
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| from __future__ import unicode_literals
from django.db import models from mptt.models import MPTTModel, TreeForeignKey
class Area(MPTTModel): name = models.CharField(max_length=50, unique=True) parent = TreeForeignKey('self', verbose_name=u'上级区域', null=True, blank=True, related_name='children')
class MPTTMeta: order_insertion_by = ['name']
class Meta: db_table = 'area' verbose_name = verbose_name_plural = (u'省/市/地区(县)')
def __unicode__(self): return self.name
|
在area的admin.py里添加
1 2 3 4 5 6 7 8 9
| from django.contrib import admin
from .models import Area
class AreaAdmin(admin.ModelAdmin): list_display = ('id', 'name', 'parent', 'level') admin.site.register(Area, AreaAdmin)
|
在项目的settings里INSTALLED_APPS里添加mptt和area,之后执行数据库操作。之后在admin后台中就可以按照层级关系添加省/市/区(县)数据。
当然最好的方式还是用程序导入。从统计局上爬取数据后导入到数据库中。
对于mptt要想深入理解的,可以参考这篇文章hierarchical-data-database