Карта только для чтения для полей GeoDjango в Django>=4.0?

Я искал старые ответы о том, как показывать динамическую карту Openlayers, но не позволять перемещать/изменять координаты/геометрию заданного поля GeoDjango (PointField в моем случае) в Django Admin.

Старые решения упоминают использование класса OSMGeoAdmin (from django.contrib.gis.admin), который позволяет установить атрибут modifiable в значение False, чтобы карта отображалась, но не поддавалась изменению. Это именно то, что мне нужно.

Однако этот класс устарел с версии Django 4.0, и теперь вместо него предлагается использовать ModelAdmin или GISModelAdmin, но ни один из них не позволяет мне воспроизвести то же поведение, что и OSMGeoAdmin.

Я проверил документацию по GISModelAdmin и обнаружил, что могу отправлять некоторые параметры в gis_widget, используя словарь gis_widget_kwargs, но изменяемый атрибут все еще не работает, поэтому я начинаю думать, что функциональность была удалена.

Пример кода для передачи параметров в gis_widget:

@admin.register(m.City)
class CityAdmin(GISModelAdmin):
    gis_widget_kwargs = {'attrs':{'map_width':1200, 'modifiable':False}}

Я что-то упустил? Это действительно больше не возможно с GISModelAdmin?
Должен ли я пройти через раздражающий процесс создания собственного виджета, чтобы повторить это поведение?

Если кто-то сталкивался с такой же ситуацией, удалось ли вам найти обходной путь?

Вернуться на верх