Карта только для чтения для полей 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
?
Должен ли я пройти через раздражающий процесс создания собственного виджета, чтобы повторить это поведение?
Если кто-то сталкивался с такой же ситуацией, удалось ли вам найти обходной путь?