Ciao Pierluigi, grazie per l'indicazione. Ho fatto le correzioni che mi hai indicato(non mi era chiaro che geodjango eredita comunque modelli e form da django) ma continuo ad avere lo stesso errore:
> IntegrityError at /map/create/add-points/ > null value in column "geom" violates not-null constraint > DETAIL: Failing row contains (4, Punto aggiunto dal form, null). Il giorno ven 26 lug 2019 alle ore 10:09 pierluigi de rosa < pierluigi.der...@gmail.com> ha scritto: > Ho letto velocemente il tuo codice ma riscontro un errore, > Io uso poco django 2.2 e più spesso 1.11 per questioni personali però nei > modelli devi importare solo quello da django.contrib.gis e non anche > django.contrib ovvero il models dovrebbe essere: > > from django.contrib.gis.db import models > > > class AddPoint(models.Model): > name = models.CharField(max_length=100) > geom = geomodels.PointField() > > def __str__(self): > return self.name > > stessa cosa per i form ovvero devi importare: > from django.contrib.gis import forms > e poi devi usare solo forms > > il resto del codice non l'ho visto ma questo errore penso sia rilevante > > Pierluigi De Rosa > > Il giorno ven 26 lug 2019 alle ore 08:32 Massimiliano Moraca < > massimilianomor...@gmail.com> ha scritto: > >> 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 models >> > >> > class 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 forms >> > >> > from .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 >> _______________________________________________ >> Gfoss@lists.gfoss.it >> http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss >> Questa e' una lista di discussione pubblica aperta a tutti. >> I messaggi di questa lista non hanno relazione diretta con le posizioni >> dell'Associazione GFOSS.it. >> 796 iscritti al 28/12/2017 > > > > -- > Ing. Pierluigi De Rosa (PhD in Earth Science) > Contract Professor of Geographic Information System at University of > Perugia > cel: 3497558268 / fax: 075 7823038 > skype: pierluigi.derosa > _______________________________________________ Gfoss@lists.gfoss.it http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss Questa e' una lista di discussione pubblica aperta a tutti. I messaggi di questa lista non hanno relazione diretta con le posizioni dell'Associazione GFOSS.it. 796 iscritti al 28/12/2017