2017-09-07 7 views
0

L'idée est d'intégrer Google Maps au lieu de la carte par défaut pour GeoDjango v1.11.5 PointField().GeoDjango: Impossible d'enregistrer un modèle avec PointField(), Erreur: SpatialProxy (POINT) avec la valeur de type: <class 'users.models.Point'>

Actuellement, dans mon models.py

class Teacher(models.Model): 
    user = models.OneToOneField(User, on_delete=models.PROTECT, related_name='Teacher') 
    placename = models.CharField(blank=True,max_length=255) 
    latitude = models.FloatField(blank=True, null=True, verbose_name='Latitude') 
    longitude = models.FloatField(blank=True, null=True, verbose_name='Longitude') 
    location = models.PointField(blank = True, null=True, srid=4326) 
    objects = models.GeoManager() 

    def save(self, *args, **kwargs): 
     self.location = Point(self.longitude, self.latitude) 
     super(Teacher, self).save(*args, **kwargs) # Call the "real" save() method. 

Cependant, lorsque je clique sur Enregistrer après ajouter manuellement le long et lat, je reçois:

TypeError at /admin/users/location/add/ Cannot set Location SpatialProxy (POINT) with value of type:

+0

ce qui est la pleine TypeError que vous obtenez? vous l'avez coupé juste avant la partie importante – rawbeans

Répondre

2

Je crois que vous utilisez la mauvaise classe Point. Point devraient être importées django.contrib.gis.geos pas users.models.Point si vous utilisez avec un PointField

Vos importations devraient être les suivantes:

from django.contrib.gis.db import models 
from django.contrib.gis.geos import Point 
+0

Merci, j'avais des modèles d'importation django.contrib.gis.db, j'ai en fait 2 importations. Cela et à partir de modèles d'importation django.db – Roma

+0

J'ai ajouté ce qui précède, mais, exceptionnellement, cela ne fonctionne pas. Si je n'ai pas la méthode de sauvegarde, je peux enregistrer avec succès le modèle – Roma

+0

@Roma, vous devriez seulement importer des modèles de 'django.contrib.gis.db', ​​pas les deux. Pouvez-vous modifier votre réponse pour inclure toutes vos importations? – rawbeans