Django的波兰地区和城市数据。

django-cities-teryt的Python项目详细描述


Django的波兰地区和城市数据。

此应用程序提供模型、管理集成以及在数据库中导入区域和城市数据的命令。

数据是从TERYT数据库中提取的 (国家领土司的国家正式登记册)。Teryt由 波兰中央统计局(GUS

数据库包含:
  • 各省
  • 市政府
  • 村庄
  • 城市
  • 市区

安装

安装django cities teryt

pip install django-cities-teryt

或开发版本

pip install -e git+git@github.com:lukaszbanasiak/django-cities-teryt.git#egg=cities_teryt

cities_teryt添加到INSTALLED_APPS

INSTALLED_APPS=(...'cities_teryt',)

现在,运行syncdb,它将只为模型创建表

./manage.py syncdb

配置

  1. 从teryt网站http://www.stat.gov.pl/broker/access/prefile/listPreFiles.jspa下载SIMCTERCxml文件,并将它们保存到一个目录中。
  2. 在您的settings.py完整路径中设置上述目录
# Default directory is `import` dir in `django-cities-teryt` app directoryCITIES_TERYT_IMPORT_DIR='/path/to/dir'

导入数据

要用所有teryt数据填充数据库,请使用命令

./manage.py cities_teryt --data all --import

要删除数据,请使用命令

./manage.py cities_teryt --data all --flush

要对特定类型的数据进行操作,请在--data参数之后枚举它们

./manage.py cities_teryt --data province, county, municipality --import
./manage.py cities_teryt --data city, village, district --flush

注意

数据是有关系的,所以最好把所有东西都导入。 数据很大,需要时间导入(没有进度显示)。 详细程度通过日志记录来控制。

示例

按名称获取City

>>>City.objects.get(name='Swarzędz')<City:Swarzędz(0971502)>

要获得这个城市Municipality的名称,我们可以使用parent方法或直接调用municipalityattrib

>>>City.objects.get(name='Swarzędz').parent<Municipality:Swarzędz(302116)>>>>City.objects.get(name='Swarzędz').municipality<Municipality:Buk(302103)>>>>Municipality.objects.get(city__name='Swarzędz')<Municipality:Swarzędz(302116)>

这样我们也可以得到ProvinceCounty

>>>City.objects.get(name='Swarzędz').province<Province:wielkopolskie(30)>>>>Province.objects.get(city__name='Swarzędz')<Province:wielkopolskie(30)>

…甚至Districts

>>>c=City.objects.get(name='Swarzędz')>>>c.district_set.all()[<District:NowaWieś(0971519)>,<District:Zieleniec(0971525)>]>>>District.objects.filter(city=c)[<District:NowaWieś(0971519)>,<District:Zieleniec(0971525)>]

将所有Cities列在同一County

>>>County.objects.get(city__name='Swarzędz').city_set.all()[<City:Buk(0970520)>,<City:MurowanaGoślina(0971152)>,<City:Kostrzyn(0970885)>,<City:Mosina(0971057)>,<City:Pobiedziska(0971287)>,<City:Puszczykowo(0971376)>,<City:Kórnik(0970922)>,<City:Swarzędz(0971502)>,<City:Luboń(0970974)>,<City:Stęszew(0971494)>]

获得漂亮的显示名称

# Village, Municipality, County, Province>>>printVillage.objects.get(name='Kaczkowo',province__name='wielkopolskie').get_display_name()Kaczkowo,Rydzyna,leszczyński,wielkopolskie# `Municipality` and `County` for "Poznań" is the same so we got only `City` and `Province` name>>>printCity.objects.get(name='Poznań').get_display_name()Poznań,wielkopolskie

要求

requirements.txt

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
swing Java按钮/网格布局   java列出Google日历中的所有事件   java无效:单击API publisher test按钮后连接到后端时出错   带有内部赋值的java While循环导致checkstyle错误   java为什么trimToSize/ensureCapacity方法提供“公共”级访问?   文件输出流的java问题   ListIterator和并发修改异常的java问题   java如何使用两个URL映射   无法识别使用“./../”构造的字符串java相对路径,为什么?   首次写入remotelyclosedsocket不会触发异常,对吗?JAVA   java OneDrive REST API为文件上载提供了400个无效谓词   Java泛型、集合接口和对象类的问题   OpenSSL Java安全提供程序   jmeter java运行jmx禁用操作