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第三方库


热门话题
java如何创建单例枚举映射?   java如何在Android视频视图中添加Cookie(标题)以支持旧版本的Android,至少到jellybean为止   Java Swing从单击中获取X,Y   java不兼容类型:int不能转换为数组中的字符串   用于写入文件的java相对文件路径   在Java中使用COLT求解线性系统的性能   java谁生成了在服务存在的进程中运行的主线程和循环器?   JAVARuntimeException:java。ClassCastException:java。lang.Long不能转换为java。串   java检查数据库连接处于活动状态   java Spring多对多未保存在表单提交上   java向Maven添加系统依赖项   爪哇和C++中迭代器的区别是什么?   java Getting“类型不匹配:在实例化映射列表时,无法将ArrayList<HashMap<String,String>>转换为List<Map<String,String>>”   javavaadin表容器并发修改   java错误膨胀类安卓。支持v7。小装置。FitWindowsFrameLayout   java如何在没有打开GL ES的情况下设置对象动画?