文章目錄

在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
#coding:utf-8
from __future__ import unicode_literals

from django.db import models
from mptt.models import MPTTModel, TreeForeignKey

# Create your models here.

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

# Register your models here.
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

打赏作者

文章目錄