Buongiorno a tutti,
spero che tra voi ci sia chi può darmi una mano GeoDjango visto che sono
oramai diversi giorni che sono arenato sul problema che descrivo qui[1].
In pratica sto provando a sviluppare una piccola applicazione che consente
di posizionare un punto su una mappa dandogli un nome. Da pannello di
amministrazione di Django riesco a farlo senza problemi, visualizzando il
punto sulla mappa. ma l'ostacolo ce l'ho con il form che ho sviluppato e
che andrà a sostituire l'immissione da pannello di amministrazione di
default.
Ogni qualvolta uso il form infatti, una volta posizionato il punto sulla
mappa, se do l'ok alla pubblicazione ho un errore di integrità. In pratica
dei due dati che passo al form (nome del punto e coordinate) le coordinate
sono NULL; questo dato non viene passato e quindi viene fuori l'errore
perchè nella tabelle PostGIS associata non è previsto il valore NULL per le
geometrie(giustamente).
*models.py*
from django.contrib.gis.db import models as geomodels
from django.db import modelsclass AddPoint(models.Model):
name = models.CharField(max_length=100)
geom = geomodels.PointField()def __str__(self):
return self.name
*forms.py*
from django import forms
from django.contrib.gis import formsfrom .models import AddPoint
class AddPointForm(forms.ModelForm):
name = forms.CharField(
max_length=100,
widget=forms.TextInput(
attrs={
"type": "text",
"class": "form-control form-control-lg",
}
),
)
point = forms.PointField(
widget=forms.OSMWidget(
attrs={
'map_width': 800,
'map_height': 250,
'default_lat': 0,
'default_lon': 0,
'default_zoom': 2,
}
),
)class Meta:
model = AddPoint
fields = [
'name',
'point',
]
*views.py*
def addPointOnMap(request):
if request.method == "POST":
geoform = AddPointForm(request.POST or None)
if geoform.is_valid():
new_point = geoform.save()
return redirect('add_points_map')
else:
geoform = AddPointForm()
context = {
'geoform': geoform,
}
template = 'maps/editing/add_point.html'
return render(request, template, context)
Questo è il codice che ho prodotto. Come vedete è una banalissima
applicazione ma a quanto pare non riesco a farla funzionare.
Uso Django 2.2, il DB che uso è PostgreSQL 11 con PostGIS 2.5
----------
[1]
https://gis.stackexchange.com/questions/329992/form-returns-integrityerror