GeoDjango在模型的模板表单上显示地图

问题描述 投票:0回答:1

我正在尝试基于Django(GeoDjango)和OpenStreetMap建立一个示例网站。到目前为止,我有一个简单的场景:

Models.py

class Parks(models.Model):
park_name_en = models.CharField(max_length=256)    
description = models.TextField()
picture = models.ImageField()
geom = PolygonField()

@property
def picture_url(self):
    return self.picture.url

def __unicode__(self):
    return self.title

views.py

def park_insert(request):
form = ParkForm()
return render(request, 'addpark.html', {'form': form})

forms.py

class ParkForm(forms.ModelForm):
class Meta:
    model = Parks
    fields = ('park_name_en', 'description', 'picture',)
    geom = forms.PolygonField()

也是最后但并非最不重要的模板addpark.html

    <html>
<head>
    {{ form.media }}
</head>

<body>
    <div id="map">
        <form enctype="multipart/form-data" method="post" action="">
            {% csrf_token %}
                {{ form.as_p }}
            <input type="submit" value="Submit"/>
        </form>
    </div>
</body></html>

当我打开模板页面时,所有字段都正确显示,除了PolygonField()以文本显示。如何在用户表单上也显示地图(我在管理面板中可以使用它,但是我想创建一个用于插入新公园的表单)

python django geodjango
1个回答
0
投票

您需要描述“表单” models.py。

Models.py

从django.contrib.gis导入表格

class Parks(models.Model):
park_name_en = models.CharField(max_length=256)    
description = models.TextField()
picture = models.ImageField()
geom = models.PointField(widget= forms.OSMWidget(attrs={'map_width': 800, 'map_height': 500}) )

@property
def picture_url(self):
    return self.picture.url

def __unicode__(self):
    return self.title

views.py

def park_insert(request):
form = ParkForm()
return render(request, 'addpark.html', {'form': form})

forms.py

class ParkForm(forms.ModelForm):
class Meta:
    model = Parks
    fields = ('park_name_en', 'description', 'picture',)
    geom = forms.PolygonField()

尝试一下。看着这个https://docs.djangoproject.com/en/2.2/ref/contrib/gis/forms-api/#widget-classes

© www.soinside.com 2019 - 2024. All rights reserved.