Django Leaflet: Добавьте поля формы для широты и долготы

Я использую пакет django-leaflet для отображения карты в админке django для PointField. Однако я хотел разместить поля, чтобы можно было написать широту и долготу, как альтернативу выбору точки на карте.

Как я могу добавить эти поля в форму?

Примечание: пакет Django Map Widgets имеет возможность вставки координат, но я не хочу ее использовать, потому что для этого требуется ключ.

Вы можете создать модель формы с 2 новыми полями, такими как lat, lng. Затем вы можете проверить, выбрана ли точка на карте или поля lat, lng заполнены.

class PointEntryOrSelectForm(forms.ModelForm):
    lat = forms.FloatField(required=False, label='Latitude')
    lng = forms.FloatField(required=False, label='Longtitude')

    class Meta:
        widgets = {'geom': LeafletWidget()}
        model = YourModel
        exclude = ['', ]

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        geom = self.initial.get("geom", None)
        if isinstance(geom, Point):
            self.initial["lng"], self.initial["lat"] = geom.tuple

    def clean(self):
        data = super().clean()
        if set(self.changed_data)>={"lat","lng"}:
            lat, lng = data.pop("lat", None), data.pop("lng", None)
            data["geom"] = Point(lng, lat, srid=4326)
    
        if not (data["geom"] or (data["lat"] and data["lng"])):
            raise forms.ValidationError(
                {"geom": "No coordinates."})
        return data

@admin.register(YourModel)
class YourModelAdmin( LeafletGeoAdmin):
    form = PointEntryOrSelectForm
Вернуться на верх