Я использую Geo Django в течение нескольких месяцев без каких-либо проблем, однако при импорте нового файла формы номер идентификатора сохраняется вместо кода сетки. В поле gridcode есть int, который важен для моего проекта.
Я знаю, что поле gridcode присутствует в шейп-файле, потому что могу протестировать его в оболочке.
#shell
>>> print(lyr.fields)
['Id', 'gridcode']
>>> feat = lyr[234]
>>> print(feat.get('gridcode'))
90 #This is the desired value
Я настроил моя модель такая же, как и всегда:
#models.py
class GeoModel(models.Model):
idn = geomodels.BigIntegerField(null=True)
grd = geomodels.BigIntegerField(null=True)
geo = geomodels.MultiPolygonField(null=True, srid=4326)
def __int__(self):
return self.grd
path_shp = os.path.abspath(os.path.join(os.path.dirname(app.__file__), 'data', 'folder', 'map.shp'))
mapping = {
'idn': 'Id',
'grd': 'gridcode',
'geo': 'MULTIPOLYGON',}
def run(verbose=True):
lm = LayerMapping(GeoModel, path_shp, mapping, transform=False)
lm.save(strict=True, verbose=verbose)
Однако, когда я пытаюсь сохранить данные, она сохраняет номер идентификатора вместо кода сетки. Например, терминал выглядит так:
Saved: GeoModel object (1517)
Saved: GeoModel object (1518)
Saved: GeoModel object (1519)
Saved: GeoModel object (1520)
[ . . .]
Любая помощь будет принята с благодарностью