将默认 GeoModelAdmin 更改为 OSMGeoAdmin
Change default GeoModelAdmin to OSMGeoAdmin
我试着像往常一样天真地将它添加到 admin.py
。
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")
]
以及我正在关注的文档:
@gasman 说得对!
如果您查看有关 specifying widgets 的 Django 文档,您会看到传递的是一个对象而不是字符串:
from django.contrib.gis.forms.widgets import OSMWidget
content_panels = Page.content_panels + [FieldPanel('location', widget=OSMWidget),]
我试着像往常一样天真地将它添加到 admin.py
。
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")
]
以及我正在关注的文档:
@gasman 说得对!
如果您查看有关 specifying widgets 的 Django 文档,您会看到传递的是一个对象而不是字符串:
from django.contrib.gis.forms.widgets import OSMWidget
content_panels = Page.content_panels + [FieldPanel('location', widget=OSMWidget),]