gpt4 book ai didi

django-admin - GeoDjango PointField 管理可视化

转载 作者:行者123 更新时间:2023-12-04 04:34:54 25 4
gpt4 key购买 nike

我想知道如何在 admin 中更改默认的 PointField 可视化(Openstreetmap),以便我可以输入简单的纬度/经度而不是在 map 上选择一个点?

我看了这个Latitude/longitude widget for pointfield?但无法在 Django 1.6b4 中以任何方式工作

谢谢

最佳答案

正如 Bibhas 所说,您可以覆盖用于该字段的小部件,但简单的文本输入可能没有用。所以这是一个完整的小部件示例,可用于 geodjango 的 PointField:

class LatLongWidget(forms.MultiWidget):
"""
A Widget that splits Point input into latitude/longitude text inputs.
"""

def __init__(self, attrs=None, date_format=None, time_format=None):
widgets = (forms.TextInput(attrs=attrs),
forms.TextInput(attrs=attrs))
super(LatLongWidget, self).__init__(widgets, attrs)

def decompress(self, value):
if value:
return tuple(value.coords)
return (None, None)

def value_from_datadict(self, data, files, name):
mylat = data[name + '_0']
mylong = data[name + '_1']

try:
point = Point(float(mylat), float(mylong))
except ValueError:
return ''

return point

现在您可以覆盖模型管理员:
from django.contrib.gis.db import models as geomodels
class CompanyAdmin(admin.ModelAdmin):
list_display = ('name', 'approval', 'company_view',)
list_filter = ('approval',)
formfield_overrides = {
geomodels.PointField: {'widget': LatLongWidget},
}

关于django-admin - GeoDjango PointField 管理可视化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19231109/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com