2014-02-07 3 views
2

저는 Postgres/PostGIS (GeoDjango)에서 Django 1.6을 사용하고 있습니다. 1.5에서 1.6으로 업그레이드했을 때 관리자 페이지를 통해 WKT를 사용하여 공간 데이터를 더 이상 추가 할 수 없음을 알았습니다. 이전에는 텍스트 상자에 표시하려는 도형의 WKT에 붙여 넣을 수있었습니다. 이제 관리자 페이지로 이동하면 지오메트리를 편집 할 수있는지도가 표시되지만 데이터를 추가 할 수 없습니다.GeoDjango 관리자에서 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) 

당신은 텍스트 영역을 찾을 수 있습니다 쉽게 많은 WKT를 읽을 수 있습니다, 그래서에 두 번째 수입을 변경

from django.forms.widgets import Textarea 

그리고 대신의 TextInput의 재정에 그것을 사용

models.PointField: {'widget': Textarea } 
+0

감사합니다. 멋진 OpenLayers지도는 더 이상 존재하지 않습니다! 텍스트 블록을 볼 수 있도록 상자를 더 크게 만들 수 있습니까? 예를 들어, 내가 붙여 넣는 WKT의 일부는 꽤 길다. 모든 것을 보는 것이 좋을 것이다. – djq

+1

위대한, 그 트릭을 다행. 가장 간단한 방법은 그것을 Textarea로 변경하는 것입니다, 나는 이것을 보여줄 답을 편집 할 것입니다. – Kip