首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django3.0 :访问模型表单时的GDALException

Django3.0 :访问模型表单时的GDALException
EN

Stack Overflow用户
提问于 2020-05-12 17:47:42
回答 1查看 444关注 0票数 0

我正在设法挽救商店的地理位置在Django项目。而且我能够从管理UI中保存数据,但是当我访问保存的数据时会得到异常。

在我的django应用程序(商店)中,我跟踪了models.py

代码语言:javascript
复制
from django.contrib.gis.db import models

class Shop(models.Model):
    name = models.CharField(max_length=100)
    location = models.PointField()
    address = models.CharField(max_length=100)
    city = models.CharField(max_length=50)

我安装了django传单settings.py

代码语言:javascript
复制
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'django.contrib.gis',
    'leaflet',
    'shops'
]

admin.py看起来像这样

代码语言:javascript
复制
#from django.contrib import admin
from django.contrib.gis import admin
from .models import Shop
from leaflet.admin import LeafletGeoAdmin


class ShopAdmin(LeafletGeoAdmin):
    list_display = ('name', 'location')

admin.site.register(Shop, ShopAdmin)

在管理UI中,我可以创建商店,但是当我试图打开任何商店来查看保存的数据时,我会看到以下异常

代码语言:javascript
复制
Environment:


Request Method: GET
Request URL: http://localhost:8000/admin/shops/shop/16/change/

Django Version: 3.0.6
Python Version: 3.7.7
Installed Applications:
['django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'django.contrib.gis',
 'leaflet',
 'shops']
Installed Middleware:
['django.middleware.security.SecurityMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.common.CommonMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware',
 'django.middleware.clickjacking.XFrameOptionsMiddleware']


Template error:
In template F:\workspaces\Django\env\lib\site-packages\django\contrib\admin\templates\admin\includes\fieldset.html, error at line 19
   OGR failure.
   9 :             {% for field in line %}
   10 :                 <div{% if not line.fields|length_is:'1' %} class="fieldBox{% if field.field.name %} field-{{ field.field.name }}{% endif %}{% if not field.is_readonly and field.errors %} errors{% endif %}{% if field.field.is_hidden %} hidden{% endif %}"{% elif field.is_checkbox %} class="checkbox-row"{% endif %}>
   11 :                     {% if not line.fields|length_is:'1' and not field.is_readonly %}{{ field.errors }}{% endif %}
   12 :                     {% if field.is_checkbox %}
   13 :                         {{ field.field }}{{ field.label_tag }}
   14 :                     {% else %}
   15 :                         {{ field.label_tag }}
   16 :                         {% if field.is_readonly %}
   17 :                             <div class="readonly">{{ field.contents }}</div>
   18 :                         {% else %}
   19 :                              {{ field.field }} 
   20 :                         {% endif %}
   21 :                     {% endif %}
   22 :                     {% if field.field.help_text %}
   23 :                         <div class="help">{{ field.field.help_text|safe }}</div>
   24 :                     {% endif %}
   25 :                 </div>
   26 :             {% endfor %}
   27 :         </div>
   28 :     {% endfor %}
   29 : </fieldset>


Traceback (most recent call last):
  File "F:\workspaces\Django\env\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
    response = get_response(request)
  File "F:\workspaces\Django\env\lib\site-packages\django\core\handlers\base.py", line 145, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File "F:\workspaces\Django\env\lib\site-packages\django\core\handlers\base.py", line 143, in _get_response
    response = response.render()
  File "F:\workspaces\Django\env\lib\site-packages\django\template\response.py", line 105, in render
    self.content = self.rendered_content
  File "F:\workspaces\Django\env\lib\site-packages\django\template\response.py", line 83, in rendered_content
    return template.render(context, self._request)
  File "F:\workspaces\Django\env\lib\site-packages\django\template\backends\django.py", line 61, in render
    return self.template.render(context)
  File "F:\workspaces\Django\env\lib\site-packages\django\template\base.py", line 171, in render
    return self._render(context)
  File "F:\workspaces\Django\env\lib\site-packages\django\template\base.py", line 163, in _render
    return self.nodelist.render(context)
  File "F:\workspaces\Django\env\lib\site-packages\django\template\base.py", line 936, in render
    bit = node.render_annotated(context)
  File "F:\workspaces\Django\env\lib\site-packages\django\template\base.py", line 903, in render_annotated
    return self.render(context)
  File "F:\workspaces\Django\env\lib\site-packages\django\template\loader_tags.py", line 150, in render
    return compiled_parent._render(context)
  File "F:\workspaces\Django\env\lib\site-packages\django\template\base.py", line 163, in _render
    return self.nodelist.render(context)
  File "F:\workspaces\Django\env\lib\site-packages\django\template\base.py", line 936, in render
    bit = node.render_annotated(context)
  File "F:\workspaces\Django\env\lib\site-packages\django\template\base.py", line 903, in render_annotated
    return self.render(context)
  File "F:\workspaces\Django\env\lib\site-packages\django\template\loader_tags.py", line 150, in render
    return compiled_parent._render(context)
  File "F:\workspaces\Django\env\lib\site-packages\django\template\base.py", line 163, in _render
    return self.nodelist.render(context)
  File "F:\workspaces\Django\env\lib\site-packages\django\template\base.py", line 936, in render
    bit = node.render_annotated(context)
  File "F:\workspaces\Django\env\lib\site-packages\django\template\base.py", line 903, in render_annotated
    return self.render(context)
  File "F:\workspaces\Django\env\lib\site-packages\django\template\loader_tags.py", line 62, in render
    result = block.nodelist.render(context)
  File "F:\workspaces\Django\env\lib\site-packages\django\template\base.py", line 936, in render
    bit = node.render_annotated(context)
  File "F:\workspaces\Django\env\lib\site-packages\django\template\base.py", line 903, in render_annotated
    return self.render(context)
  File "F:\workspaces\Django\env\lib\site-packages\django\template\loader_tags.py", line 62, in render
    result = block.nodelist.render(context)
  File "F:\workspaces\Django\env\lib\site-packages\django\template\base.py", line 936, in render
    bit = node.render_annotated(context)
  File "F:\workspaces\Django\env\lib\site-packages\django\template\base.py", line 903, in render_annotated
    return self.render(context)
  File "F:\workspaces\Django\env\lib\site-packages\django\template\defaulttags.py", line 209, in render
    nodelist.append(node.render_annotated(context))
  File "F:\workspaces\Django\env\lib\site-packages\django\template\base.py", line 903, in render_annotated
    return self.render(context)
  File "F:\workspaces\Django\env\lib\site-packages\django\template\loader_tags.py", line 188, in render
    return template.render(context)
  File "F:\workspaces\Django\env\lib\site-packages\django\template\base.py", line 173, in render
    return self._render(context)
  File "F:\workspaces\Django\env\lib\site-packages\django\template\base.py", line 163, in _render
    return self.nodelist.render(context)
  File "F:\workspaces\Django\env\lib\site-packages\django\template\base.py", line 936, in render
    bit = node.render_annotated(context)
  File "F:\workspaces\Django\env\lib\site-packages\django\template\base.py", line 903, in render_annotated
    return self.render(context)
  File "F:\workspaces\Django\env\lib\site-packages\django\template\defaulttags.py", line 209, in render
    nodelist.append(node.render_annotated(context))
  File "F:\workspaces\Django\env\lib\site-packages\django\template\base.py", line 903, in render_annotated
    return self.render(context)
  File "F:\workspaces\Django\env\lib\site-packages\django\template\defaulttags.py", line 209, in render
    nodelist.append(node.render_annotated(context))
  File "F:\workspaces\Django\env\lib\site-packages\django\template\base.py", line 903, in render_annotated
    return self.render(context)
  File "F:\workspaces\Django\env\lib\site-packages\django\template\defaulttags.py", line 309, in render
    return nodelist.render(context)
  File "F:\workspaces\Django\env\lib\site-packages\django\template\base.py", line 936, in render
    bit = node.render_annotated(context)
  File "F:\workspaces\Django\env\lib\site-packages\django\template\base.py", line 903, in render_annotated
    return self.render(context)
  File "F:\workspaces\Django\env\lib\site-packages\django\template\defaulttags.py", line 309, in render
    return nodelist.render(context)
  File "F:\workspaces\Django\env\lib\site-packages\django\template\base.py", line 936, in render
    bit = node.render_annotated(context)
  File "F:\workspaces\Django\env\lib\site-packages\django\template\base.py", line 903, in render_annotated
    return self.render(context)
  File "F:\workspaces\Django\env\lib\site-packages\django\template\base.py", line 992, in render
    return render_value_in_context(output, context)
  File "F:\workspaces\Django\env\lib\site-packages\django\template\base.py", line 971, in render_value_in_context
    value = str(value)
  File "F:\workspaces\Django\env\lib\site-packages\django\utils\html.py", line 373, in <lambda>
    klass.__str__ = lambda self: mark_safe(klass_str(self))
  File "F:\workspaces\Django\env\lib\site-packages\django\forms\boundfield.py", line 33, in __str__
    return self.as_widget()
  File "F:\workspaces\Django\env\lib\site-packages\django\forms\boundfield.py", line 96, in as_widget
    renderer=self.form.renderer,
  File "F:\workspaces\Django\env\lib\site-packages\django\forms\widgets.py", line 241, in render
    context = self.get_context(name, value, attrs)
  File "f:\workspaces\django\env\src\django-leaflet\leaflet\forms\widgets.py", line 78, in get_context
    context = super(LeafletWidget, self).get_context(name, value, attrs)
  File "F:\workspaces\Django\env\lib\site-packages\django\contrib\gis\forms\widgets.py", line 67, in get_context
    'serialized': self.serialize(value),
  File "f:\workspaces\django\env\src\django-leaflet\leaflet\forms\widgets.py", line 40, in serialize
    return value.geojson if value else ''
  File "F:\workspaces\Django\env\lib\site-packages\django\contrib\gis\geos\geometry.py", line 387, in json
    return self.ogr.json
  File "F:\workspaces\Django\env\lib\site-packages\django\contrib\gis\geos\geometry.py", line 429, in ogr
    return gdal.OGRGeometry(self._ogr_ptr(), self.srs)
  File "F:\workspaces\Django\env\lib\site-packages\django\contrib\gis\geos\geometry.py", line 436, in srs
    return gdal.SpatialReference(self.srid)
  File "F:\workspaces\Django\env\lib\site-packages\django\contrib\gis\gdal\srs.py", line 92, in __init__
    self.import_epsg(srs_input)
  File "F:\workspaces\Django\env\lib\site-packages\django\contrib\gis\gdal\srs.py", line 277, in import_epsg
    capi.from_epsg(self.ptr, epsg)
  File "F:\workspaces\Django\env\lib\site-packages\django\contrib\gis\gdal\prototypes\errcheck.py", line 117, in check_errcode
    check_err(result, cpl=cpl)
  File "F:\workspaces\Django\env\lib\site-packages\django\contrib\gis\gdal\error.py", line 59, in check_err
    raise e(msg)

Exception Type: GDALException at /admin/shops/shop/16/change/
Exception Value: OGR failure.

但是当我改变我的admin.py时,我看到的是地图,但却是丑陋的视图。

代码语言:javascript
复制
from django.contrib.gis import admin
from .models import Shop
from leaflet.admin import LeafletGeoAdmin

class ShopAdmin(admin.GeoModelAdmin):
    list_display = ('name', 'location')

admin.site.register(Shop, ShopAdmin)

EN

回答 1

Stack Overflow用户

发布于 2020-05-13 08:36:30

我也有类似的问题。检查您的GDAL版本

代码语言:javascript
复制
gdalinfo --version
GDAL 3.0.4, released 2020/01/28

对GDAL3.x的支持刚刚添加到django,但截至2020年5月13日还没有发布:看这儿

很可能,如果您只是为了测试目的(!)切换lat和长输入到GEOSGeometry,它将再次工作。AxisOrderAxisMappingStrategy是上述修复程序中的新内容。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61758494

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档