2014-02-07 36 views
2

我在使用Django 1.6和Postgres/PostGIS(GeoDjango)。我注意到,當我從1.5升級到1.6時,我不再能夠通過管理頁面使用WKT添加空間數據。以前,我可以將WKT中想要顯示的幾何圖形粘貼到文本框中。現在,當我進入管理頁面時,會顯示一張地圖,它允許我編輯幾何圖形,但無法添加數據。在GeoDjango Admin中禁用Openlayers地圖

是否有一個簡單的修復,允許我禁用顯示此地圖?

回答

6

您可以使用formfield_overrides覆蓋任何管理員窗體中使用的窗口小部件。

https://docs.djangoproject.com/en/dev/ref/contrib/admin/#django.contrib.admin.ModelAdmin.formfield_overrides

ModelAdmin.formfield_overrides

這提供了一個快速和骯髒的方法來覆蓋一些在管理使用的字段選項。 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 } 
+0

謝謝,可愛的OpenLayers地圖是沒有更多!是否有可能使框變得更大,以至於你可以看到一段文字?例如,我粘貼的一些WKT相當長 - 很高興看到這一切。 – djq

+1

太棒了,很高興這樣做。最簡單的事情就是將它改爲Textarea,我將編輯答案來表明這一點。 – Kip