通过管理小部件保存到 PointField 的 longitude/latitude 不正确
Incorrect longitude/latitude saved to PointField via admin widget
我有一个基本的 GeoDjango PointField
:
point = models.PointField(srid=4326, null=True)
使用管理员时,我希望将其保存在数据库中(例如,伦敦):
SRID=4326;POINT (-94.577597, 39.057294)
但是,如果我将标记放在伦敦,我会得到:
SRID=4326;POINT (-19067.91721243037 6711435.410105047)
longitude/latitude 离我们很远。
我尝试手动将 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
。我使用的是默认表单小部件,但我想知道小部件可能是问题所在吗?
好的,我好像忘了包含正确的 GeoDjango Admin class:
from django.contrib.gis import admin
from app import models
@admin.register(models.MyModel)
class MyAdmin(admin.OSMGeoAdmin):
pass
我有一个基本的 GeoDjango PointField
:
point = models.PointField(srid=4326, null=True)
使用管理员时,我希望将其保存在数据库中(例如,伦敦):
SRID=4326;POINT (-94.577597, 39.057294)
但是,如果我将标记放在伦敦,我会得到:
SRID=4326;POINT (-19067.91721243037 6711435.410105047)
longitude/latitude 离我们很远。
我尝试手动将 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
。我使用的是默认表单小部件,但我想知道小部件可能是问题所在吗?
好的,我好像忘了包含正确的 GeoDjango Admin class:
from django.contrib.gis import admin
from app import models
@admin.register(models.MyModel)
class MyAdmin(admin.OSMGeoAdmin):
pass