Ciao a tutti, per un'applicazione web stiamo testando geodjango.
Abbiamo diversi problemini, ma per ora mi concentro su uno solo: abbiamo una form per l'inserimento dati a cui vengono passati est e nord di alcuni punti, durante il salvataggio della form creiamo il campo geometrico da inserire ma alla fine sul database rimane null, ecco il codice che usiamo nella views (come potete vedere abbiamo fatto la prova sia con geos che con ogr ma il risultato è uguale) def insertPlace(request): if request.method == 'POST': form = InsertPlaceForm(request.POST) if form.is_valid(): #pnt = OGRGeometry('POINT (' + str(form.cleaned_data["east"]) + ' ' + str(form.cleaned_data["north"]) + ')', srs=4326) pnt = Point(float(form.cleaned_data["east"]), float(form.cleaned_data["north"])) pnt.srid = 4326 form.cleaned_data["geom"] = pnt form.save() return HttpResponseRedirect('/acesap_webgis/webgis/') else: form = InsertPlaceForm() # An unbound form return render_to_response("insertplace.html", {"formm": form}) ciao Luca _______________________________________________ Iscriviti all'associazione GFOSS.it: http://www.gfoss.it/drupal/iscrizione [hidden email] http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss Questa e' una lista di discussione pubblica aperta a tutti. Non inviate messaggi commerciali. I messaggi di questa lista non rispecchiano necessariamente le posizioni dell'Associazione GFOSS.it. 485 iscritti al 20.11.2010 |
Il 24 novembre 2010 20:04, Paolo Corti <[hidden email]> ha scritto:
> 2010/11/24 Luca Delucchi <[hidden email]>: >> Ciao a tutti, per un'applicazione web stiamo testando geodjango. >> Abbiamo diversi problemini, ma per ora mi concentro su uno solo: >> abbiamo una form per l'inserimento dati a cui vengono passati est e >> nord di alcuni punti, durante il salvataggio della form creiamo il >> campo geometrico da inserire ma alla fine sul database rimane null, >> ecco il codice che usiamo nella views (come potete vedere abbiamo >> fatto la prova sia con geos che con ogr ma il risultato è uguale) >> > > conviene che manchi anche il modello e il form (penso che sia li ad > una prima occhiata il malfunzionamento) > appena posso cerco di darti una mano ecco modello e form class Sites(models.Model): id_sites = models.AutoField(primary_key=True) east = models.DecimalField(max_digits=11, decimal_places=8) # was 65535 for both north = models.DecimalField(max_digits=11, decimal_places=8) height = models.DecimalField(max_digits=6, decimal_places=2) sitename = models.TextField() geom = gismodels.PointField(srid=4326) # This field type is a guess. Was models.TextField notes = models.TextField() objects = gismodels.GeoManager() class Meta: db_table = u'sites' class InsertPlaceForm(ModelForm): #id_sites = IntegerField(widget=HiddenInput,required=True) #geom = gismodels.PointField(required=False) # NOT WORKING. class Meta: model = Sites exclude = ('geom',) > ciao > P > ciao Luca _______________________________________________ Iscriviti all'associazione GFOSS.it: http://www.gfoss.it/drupal/iscrizione [hidden email] http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss Questa e' una lista di discussione pubblica aperta a tutti. Non inviate messaggi commerciali. I messaggi di questa lista non rispecchiano necessariamente le posizioni dell'Associazione GFOSS.it. 485 iscritti al 20.11.2010 |
Quoting Luca Delucchi <[hidden email]>:
> Il 24 novembre 2010 20:04, Paolo Corti <[hidden email]> ha scritto: > > 2010/11/24 Luca Delucchi <[hidden email]>: > >> Ciao a tutti, per un'applicazione web stiamo testando geodjango. > >> Abbiamo diversi problemini, ma per ora mi concentro su uno solo: > >> abbiamo una form per l'inserimento dati a cui vengono passati est e > >> nord di alcuni punti, durante il salvataggio della form creiamo il > >> campo geometrico da inserire ma alla fine sul database rimane null, > >> ecco il codice che usiamo nella views (come potete vedere abbiamo > >> fatto la prova sia con geos che con ogr ma il risultato è uguale) > >> > > > > conviene che manchi anche il modello e il form (penso che sia li ad > > una prima occhiata il malfunzionamento) > > appena posso cerco di darti una mano > > ecco modello e form > > class Sites(models.Model): > id_sites = models.AutoField(primary_key=True) > east = models.DecimalField(max_digits=11, decimal_places=8) # was > 65535 for both > north = models.DecimalField(max_digits=11, decimal_places=8) > height = models.DecimalField(max_digits=6, decimal_places=2) > sitename = models.TextField() > geom = gismodels.PointField(srid=4326) # This field type is a > guess. Was models.TextField > notes = models.TextField() > objects = gismodels.GeoManager() > class Meta: > db_table = u'sites' > > class InsertPlaceForm(ModelForm): > #id_sites = IntegerField(widget=HiddenInput,required=True) > #geom = gismodels.PointField(required=False) # NOT WORKING. Perché PointField sta sotto gismodels? Dovresti avere all'inizio from django.contrib.gis.db import models e tutti i tipi di Field derivano da quello. O no? Ciao steko -- Stefano Costa http://www.iosa.it/ Open Archaeology _______________________________________________ Iscriviti all'associazione GFOSS.it: http://www.gfoss.it/drupal/iscrizione [hidden email] http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss Questa e' una lista di discussione pubblica aperta a tutti. Non inviate messaggi commerciali. I messaggi di questa lista non rispecchiano necessariamente le posizioni dell'Associazione GFOSS.it. 485 iscritti al 20.11.2010 |
Il 24 novembre 2010 23:39, Stefano Costa <[hidden email]> ha scritto:
>> >> class InsertPlaceForm(ModelForm): >> #id_sites = IntegerField(widget=HiddenInput,required=True) >> #geom = gismodels.PointField(required=False) # NOT WORKING. > > Perché PointField sta sotto gismodels? Dovresti avere all'inizio > se ti riferisci a questo sopra è commentanto e non funziona... > Ciao > steko > ciao Luca _______________________________________________ Iscriviti all'associazione GFOSS.it: http://www.gfoss.it/drupal/iscrizione [hidden email] http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss Questa e' una lista di discussione pubblica aperta a tutti. Non inviate messaggi commerciali. I messaggi di questa lista non rispecchiano necessariamente le posizioni dell'Associazione GFOSS.it. 485 iscritti al 20.11.2010 |
Quoting Luca Delucchi <[hidden email]>:
> se ti riferisci a questo sopra è commentanto e non funziona... geom = gismodels.PointField(srid=4326) # This field type is a guess. Was models.TextField notes = models.TextField() objects = gismodels.GeoManager() Idem come sopra (se non ho visto il commento forse però sono un po' stanco) Ciao steko -- Stefano Costa http://www.iosa.it/ Open Archaeology _______________________________________________ Iscriviti all'associazione GFOSS.it: http://www.gfoss.it/drupal/iscrizione [hidden email] http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss Questa e' una lista di discussione pubblica aperta a tutti. Non inviate messaggi commerciali. I messaggi di questa lista non rispecchiano necessariamente le posizioni dell'Associazione GFOSS.it. 485 iscritti al 20.11.2010 |
In reply to this post by Luca Delucchi
Caro Luca
come spiegato BENE ;) sulla documentazione di Django [1] (leggi la nota): "If you specify fields or exclude when creating a form with ModelForm, then the fields that are not in the resulting form will not be set by the form's save() method. Django will prevent any attempt to save an incomplete model, so if the model does not allow the missing fields to be empty, and does not provide a default value for the missing fields, any attempt to save() a ModelForm with missing fields will fail. To avoid this failure, you must instantiate your model with initial values for the missing, but required fields..." pertanto puoi usare uno dei due modi suggeriti, ad es modificando cosi' la tua view, vedrai che ti funziona: if form.is_valid(): pnt = Point(float(form.cleaned_data["east"]),float(form.cleaned_data["north"])) pnt.srid = 4326 place = form.save(commit=False) place.geom = pnt place.save() [1] http://docs.djangoproject.com/en/dev/topics/forms/modelforms/#using-a-subset-of-fields-on-the-form ciao P -- Paolo Corti GIS specialist and web developer web: http://www.paolocorti.net twitter: @paolo_corti _______________________________________________ Iscriviti all'associazione GFOSS.it: http://www.gfoss.it/drupal/iscrizione [hidden email] http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss Questa e' una lista di discussione pubblica aperta a tutti. Non inviate messaggi commerciali. I messaggi di questa lista non rispecchiano necessariamente le posizioni dell'Associazione GFOSS.it. 485 iscritti al 20.11.2010 |
2010/11/26 Paolo Corti <[hidden email]>:
> Caro Luca > come spiegato BENE ;) sulla documentazione di Django [1] (leggi la nota): > eh grazie, me l'ero perso!! > "If you specify fields or exclude when creating a form with ModelForm, > then the fields that are not in the resulting form will not be set by > the form's save() method. Django will prevent any attempt to save an > incomplete model, so if the model does not allow the missing fields to > be empty, and does not provide a default value for the missing fields, > any attempt to save() a ModelForm with missing fields will fail. To > avoid this failure, you must instantiate your model with initial > values for the missing, but required fields..." > > pertanto puoi usare uno dei due modi suggeriti, ad es modificando > cosi' la tua view, vedrai che ti funziona: si si funziona grazie mille!! > ciao > P > ciao Luca _______________________________________________ Iscriviti all'associazione GFOSS.it: http://www.gfoss.it/drupal/iscrizione [hidden email] http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss Questa e' una lista di discussione pubblica aperta a tutti. Non inviate messaggi commerciali. I messaggi di questa lista non rispecchiano necessariamente le posizioni dell'Associazione GFOSS.it. 485 iscritti al 20.11.2010 |
Free forum by Nabble | Edit this page |