通过管理小部件保存到 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.gisINSTALLED_APPS。我使用的是默认表单小部件,但我想知道小部件可能是问题所在吗?

好的,我好像忘了包含正确的 GeoDjango Admin class:

from django.contrib.gis import admin
from app import models

@admin.register(models.MyModel)
class MyAdmin(admin.OSMGeoAdmin):
    pass