我正在使用带有Postgres / PostGIS(GeoDjango)的Django 1.6。我注意到当我从1.5升级到1.6时,我无法再通过管理页面使用WKT添加空间数据。以前,我可以将要显示的几何体的WKT粘贴到文本框中。现在,当我转到管理页面时,会显示一个允许我编辑几何图形的地图,但我无法添加数据。
是否有一个简单的修复程序允许我禁用显示此地图?
答案 0 :(得分:7)
您可以使用 formfield_overrides 覆盖任何管理表单中使用的窗口小部件。
<强> ModelAdmin.formfield_overrides 强>
这提供了一种快速而简洁的方法来覆盖在admin中使用的一些Field选项。 formfield_overrides是一个字典,它将字段类映射到在构造时传递给字段的参数的字典。
因此,在您的情况下,您希望使用普通的旧文本字段覆盖可爱的开放图层地图。以下内容将使用GeoModel模型中任何PointField的文本输入替换地图。
from app.models import GeoModel
from django.forms.widgets import TextInput
from django.contrib.gis.db import models
from django.contrib import admin
class DirectAdmin(admin.ModelAdmin):
formfield_overrides = {
models.PointField: {'widget': TextInput }
}
admin.site.register(GeoModel, DirectAdmin)
您可能会发现Textarea使得阅读WKT变得更加容易,因此将第二次导入更改为:
from django.forms.widgets import Textarea
并在覆盖中使用它而不是TextInput:
models.PointField: {'widget': Textarea }