【问题标题】:How to fix the GeoDjango Tutorial?如何修复 GeoDjango 教程?
【发布时间】:2023-08-28 06:31:01
【问题描述】:

我正在尝试使用 Sqlite 执行 GeoDjango Tutorial,如 here 所述。

当我调用 load.py 脚本时,它会停止显示错误:

Failed to save the feature (id: 206) into the model with the keyword arguments:
{'fips': 'UK', 'iso2': 'GB', 'iso3': 'GBR', 'un': 826, 'name': 'United Kingdom'
...
sqlite3.IntegrityError: NOT NULL constraint failed: world_worldborder.mpoly
...
django.db.utils.IntegrityError: NOT NULL constraint failed: world_worldborder.mpoly

有人知道这个问题的原因吗?还有一种 Django 管理几何的方法,可以很好地导入包括“英国”记录在内的所有数据?

我正在使用:

  • Ubuntu 18.04
  • Python 3.6.8
  • Django==2.2.7
  • pkg-resources==0.0.0
  • pytz==2019.3
  • spatialite==0.0.3
  • sqlparse==0.3.0
  • libgeos-dev==3.6.2-1build2
  • binutils==2.30-21ubuntu1~18.04.2
  • libproj-dev==4.9.3-2
  • gdal-bin==2.2.3+dfsg-2
  • libgdal-dev==2.2.3+dfsg-2
  • python3-gdal==2.2.3+dfsg-2

【问题讨论】:

    标签: django python-3.x ubuntu-18.04 geodjango spatialite


    【解决方案1】:

    我只能在 models.py 中设置 mpoly/geom 字段 null=True

    mpoly = models.MultiPolygonField(null=True)
    

    这不是一个完整的解决方案,因为至少“英国”被忽略了。但这是一个非常好的解决方法。

    我认为 TM_WORLD_BORDERS-0.3.shp 没有问题。 Django尝试生成SQL时似乎有问题。

    【讨论】: