小编Lar*_*oni的帖子

GeoDjango LayerMapping和外键

我正在尝试使用GeoDjango的LayerMapping功能将我的KML文件导入模型.我正在进行测试,在进行常规导入时没有问题.但是,我最近在我的模型中添加了一个外键.我的模型叫做PlaceMark,它现在有一个名为Layer的模型的FK.我想要

  1. 覆盖导入并手动设置外键字段的值或
  2. 更新我的KML文件以包含一个新元素,该元素通过Layer的pk或name字段将PlaceMark连接到图层.

这是我如何从shell测试和相关的错误:

>>>from locator import load
>>>load.run()
...
TypeError: ForeignKey mapping must be of dictionary type.
....
Run Code Online (Sandbox Code Playgroud)

这是我的load.py档案:

import os
from django.contrib.gis.utils import LayerMapping
from models import PlaceMark

placemark_mapping = {
    'name' : 'Name',
    'description' : 'Description',
    # This line below is the one that is suspect #
    'layer': 'Layer',
    'geom' : 'POINT25D',
}

placemark_kml = os.path.abspath(os.path.join(os.path.dirname(__file__), 'data/claim.kml'))

def run(verbose=True):
    lm = LayerMapping(PlaceMark, placemark_kml, placemark_mapping,
                      transform=False, encoding='iso-8859-1')

lm.save(strict=True, verbose=verbose)
Run Code Online (Sandbox Code Playgroud)

KML文件:

<?xml version="1.0" encoding="Windows-1252"?>
<kml xmlns="http://earth.google.com/kml/2.1">
<Folder> …
Run Code Online (Sandbox Code Playgroud)

python django geodjango

12
推荐指数
2
解决办法
1089
查看次数

标签 统计

django ×1

geodjango ×1

python ×1