当我尝试为以下模型进行迁移时:
class Location(models.Model):
name = models.CharField(max_length=200)
latitude = models.FloatField
longitude = models.FloatField
altitude = models.IntegerField
def _str_(self):
return self.name
def getLatitude(self):
return self.latitude
def getLongitude(self):
return self.longitude
class Distance(models.Model):
placeA = models.ForeignKey(Location, on_delete=models.CASCADE)
placeB = models.ForeignKey(Location, on_delete=models.CASCADE)
placeAlatitude = placeA.getLatitude()
placeBlatitude = placeB.getLatitude()
placeAlongitude = Location.objects.select_related().get(placeA.longitude)
placeBlongitude = Location.objects.select_related().get(placeB.longitude)
distance = models.FloatField(default = 0.0)
我遇到了错误:
“ ForeignKey”对象没有属性“ getLatitude”
如果我尝试直接直接访问纬度(placeA.latitude
),则会收到类似的错误消息
我在做什么错?我是使用Django框架的新手。
答案 0 :(得分:1)
在模型中,您正在定义结构。您不能使用
placeAlatitude = placeA.getLatitude()
placeBlatitude = placeB.getLatitude()
placeAlatitude和placeBlatitude必须定义模型的类型。您不能简单地返回值。
通过分析模型,这两个字段不是必需的,它们是冗余值(placeAlongitude和placeBlongitude相同)。您定义了与位置的外键关系。因此,您可以使用该关系来访问经度和纬度。
答案 1 :(得分:1)
首先,您的Location
模型中可能有一个错误:您在这里没有构造 FloatField
和IntegerField
:您只传递了一个引用该类时,您不要“调用”它。因此,为了定义这些列,您应该添加括号:
class Location(models.Model):
name = models.CharField(max_length=200)
latitude = models.FloatField()
longitude = models.FloatField()
altitude = models.IntegerField()
# ...
接下来,您无法使用placeAlatitude
定义placeA.GetLatitude()
等,在类级别placeA
是ForeignKey
对象,不是是{ {1}}对象,但是您可以在此处定义Location
,对于@property
对象,它将获取相关对象的正确属性:
Distance