首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django传单:为纬度和经度添加表单字段

Django传单:为纬度和经度添加表单字段
EN

Stack Overflow用户
提问于 2022-05-20 00:07:47
回答 1查看 397关注 0票数 0

我使用django-leaflet包在PointField的django管理程序中显示地图。然而,我想要放置字段,这样就可以写出纬度和经度,作为选择地图上的点的替代方法。

如何将这些字段添加到表单中?

注意: Django Map Widget包能够插入坐标,但我不想使用它,因为它需要一个键。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-05-24 07:36:03

您可以创建一个模型形式与两个新的领域,如lat,lng。然后,您可以验证,如果点选择在地图或lat,液化天然气领域是填补。

代码语言:javascript
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72312252

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档