我有一个基本的GeoDjango PointField
:
point = models.PointField(srid=4326, null=True)
使用管理员时,我希望将其保存在数据库中(例如伦敦):
SRID=4326;POINT (-94.577597, 39.057294)
但相反,如果我将标记放在伦敦,我会得到:
SRID=4326;POINT (-19067.91721243037 6711435.410105047)
经度/纬度偏离的地方。
我已尝试手动将Point
设置为该位置:
obj.point = Point(-94.577597, 39.057294)
obj.save()
然后将窗口小部件关闭。
所以似乎错误的纬度和经度被保存到现场,或者使用了错误的坐标系。
我尝试手动覆盖窗口小部件,以确保在窗口小部件上使用正确的SRID:
class Meta:
model = models.MyModel
fields = "__all__"
widgets = {
'point': widgets.OSMWidget(attrs={
'map_srid': 4326,
'map_width': 800,
'map_height': 500,
'display_raw': True
})
}
但没有运气。
我已经安装了GeoDjango的所有依赖项,我已经在我的数据库上启用了postgis扩展,并且我正在使用正确的引擎:
DATABASES['default']['ENGINE'] = 'django.contrib.gis.db.backends.postgis'
我还在django.contrib.gis
添加了INSTALLED_APPS
。我使用默认表单小部件,但我想知道小部件可能是问题吗?
答案 0 :(得分:1)
好的,似乎我忘了包含正确的GeoDjango Admin类:
from django.contrib.gis import admin
from app import models
@admin.register(models.MyModel)
class MyAdmin(admin.OSMGeoAdmin):
pass