我有一個帶有位置欄位的模型,如下所示:
from django.contrib.gis.db import models as gis_models
class Facility(models.Model):
location = gis_models.PointField(srid=4326, verbose_name=_('location'), null=True, blank=True)
我希望用戶能夠使用 django admin 中的地圖設定位置。我在我的 Django 管理員中添加了以下代碼:
from django.contrib.gis.db import models as gis_models
from mapwidgets.widgets import GooglePointFieldWidget
@admin.register(Facility)
class FacilityAdmin(admin.ModelAdmin):
formfield_overrides = {
gis_models: {'widget': GooglePointFieldWidget},
}
最后,我在 settings.py 中添加了以下設定:
MAP_WIDGETS = {
"GooglePointFieldWidget": (
("zoom", 12),
("mapCenterLocation", [ 50.8157, 9.1846]),
),
"GOOGLE_MAP_API_KEY": env('GOOGLE_MAP_API_KEY')
}
我使用 postgis 影像作為我的資料庫,以下是我的 requirements.txt:
asgiref==3.5.2
async-timeout==4.0.2
branca==0.5.0
certifi==2022.9.24
chardet==5.0.0
charset-normalizer==2.1.1
click==8.1.3
colorama==0.4.6
Deprecated==1.2.13
Django==4.1.2
django-crispy-forms==1.14.0
django-environ==0.9.0
django-map-widgets==0.4.0
django-rq==2.5.1
folium==0.13.0
idna==3.4
Jinja2==3.1.2
lml==0.1.0
MarkupSafe==2.1.1
numpy==1.23.4
packaging==21.3
pandas==1.5.1
Pillow==9.2.0
postgis==1.0.4
psycopg2==2.9.4
pyexcel==0.7.0
pyexcel-io==0.6.6
pyparsing==3.0.9
python-dateutil==2.8.2
pytz==2022.5
redis==4.3.4
requests==2.28.1
rq==1.11.1
six==1.16.0
sqlparse==0.4.3
texttable==1.6.4
tzdata==2022.5
urllib3==1.26.12
wrapt==1.14.1
該地圖出現在 django admin 中,但事實證明,它沒有讀取設定。地圖的樣式也是不可接受的。有什么辦法可以解決嗎?現在這是我在我的 django 管理面板中得到的:

uj5u.com熱心網友回復:
顯然,語法是錯誤的。Django Map Widgets的檔案中說,formfield_overrides 應該這樣寫:
from django.contrib.gis.db import models as gis_models
class FacilityAdmin(admin.ModelAdmin):
formfield_overrides = {
gis_models.PointField: {'widget': GooglePointFieldWidget},
}
*注意添加到gis_models的PointField。
還請記住在谷歌控制臺中啟用 Maps Javascript Api,如此處所述。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/533863.html
