2017-10-18 168 views
1

我試圖像我通常會天真地把它添加到admin.py更改默認GeoModelAdmin到OSMGeoAdmin

from django.contrib.gis import admin 
from project.models import ProjectMap 

admin.site.register(ProjectMap, admin.OSMGeoAdmin) 

我試圖指定窗口小部件:

content_panels = Page.content_panels + [ 
    FieldPanel('location', widget='django.contrib.gis.forms.widgets.OSMWidget'), 
] 

但還是老樣子表示從GeoModelAdmin默認的衛星圖像。

這裏是基本款我的工作。

class ProjectPage(Page): 
    date = models.DateField("Post date", null=True) 
    body = RichTextField(blank=True) 

    def main_image(self): 
     gallery_item = self.gallery_images.first() 
     if gallery_item: 
      return gallery_item.image 
     else: 
      return None 

    search_fields = Page.search_fields + [ 
     index.SearchField('body'), 
    ] 

    content_panels = Page.content_panels + [ 
     MultiFieldPanel([ 
      FieldPanel('date'), 
     ], heading="Project information"), 
     MultiFieldPanel([ 
      FieldPanel('body', classname="full"), 
     ], heading='Project'), 
     InlinePanel('gallery_images', label="Gallery images"), 
     InlinePanel('project_map', label="Project location") 
    ] 


class ProjectMap(Orderable): 
    page = ParentalKey(ProjectPage, related_name='project_map') 
    city = models.CharField(blank=True, max_length=250) 
    address = models.CharField(blank=True, max_length=250) 
    country = models.CharField(blank=True, max_length=250) 
    location = PointField(blank=True, null=True) 

    content_panels = Page.content_panels + [ 
     MultiFieldPanel([ 
      FieldPanel('city'), 
      FieldPanel('address'), 
      FieldPanel('country'), 
      FieldPanel('location'), 
     ], heading="Location") 
    ] 

而且我下面的文檔:

+2

上'FieldPanel'的'widget'參數必須是控件對象或類,而不是字符串路徑 - 你可以從django.contrib.gis.forms.widgets嘗試'導入OSMWidget'然後'FieldPanel(「位置」,窗口小部件= OSMWidget)'? – gasman

回答

1

@gasman是正確的!

如果你看看Django文檔約specifying widgets,你會看到一個對象傳遞,而不是一個字符串:

from django.contrib.gis.forms.widgets import OSMWidget 

content_panels = Page.content_panels + [FieldPanel('location', widget=OSMWidget),] 
+0

謝謝。我更新了代碼。我沒有收到任何錯誤,但該部件在管理員中未更改。 –

+0

它沒有工作,因爲ProjectMap是ParentalKey到ProjectPage。如果情況並非如此,那麼它就有效。 –