2017-09-07 9 views
0

アイデアは、 GeoDjango v1.11.5 PointField()GeoDjango:PointField()、エラー:タイプ:<class 'users.models.Point'>のSpatialProxy(POINT)を持つモデルを保存できません>

現在、私の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. 

、私は手動で長いを追加し、緯度、私が取得した後、[保存]をクリックするとき:

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

+0

あなたが取得している完全な例外TypeErrorは何ですか?あなたは重要な部分の直前でそれを切り捨てました – rawbeans

答えて

2

は、私はあなたが使用していると信じて間違ったPointクラス。 Pointdjango.contrib.gis.geosないusers.models.Pointからインポートする必要がありますが、以下のようにする必要がありますPointField

あなたの輸入とそれを使用している場合:

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

ありがとう、私はdjango.contrib.gis.dbインポートモデルを持っていましたが、実際には2つのインポートがあります。それとdjango.dbのインポートモデルから – Roma

+0

私は上記を追加しましたが、不自然に動作しません。 saveメソッドがない場合、モデル – Roma

+0

@Romaを正常に保存することができます。両方のモデルではなく、 'django.contrib.gis.db'からモデルをインポートする必要があります。すべての輸入品を含めるように回答を編集できますか? – rawbeans

関連する問題