亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

'ForeignKey' 對象沒有屬性

'ForeignKey' 對象沒有屬性

慕村225694 2021-07-28 17:49:30
當我嘗試為以下模型進行遷移時: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.longitudeclass 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 框架的新手。
查看完整描述

2 回答

?
一只甜甜圈

TA貢獻1836條經驗 獲得超5個贊

首先,有可能在一個錯誤Location的模型:你在這里不會興建的FloatFieldS和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對象,不是一個Location,對象,但是,您可以定義@property這里的意志,對于一個Distance對象,獲取相關對象的正確的屬性:


class Distance(models.Model):

    placeA = models.ForeignKey(Location, on_delete=models.CASCADE)

    placeB = models.ForeignKey(Location, on_delete=models.CASCADE)

    distance = models.FloatField(default = 0.0)


    @property

    def placeAlatitude(self):

        return self.placeA.latitude


    @property

    def placeBlatitude(self):

        return self.placeB.latitude


    @property

    def placeAlongitude(self):

        return self.placeA.longitude


    @property

    def placeBlongitude(self):

        return self.placeB.longitude


查看完整回答
反對 回復 2021-08-03
?
尚方寶劍之說

TA貢獻1788條經驗 獲得超4個贊

在您的模型中,您正在定義結構。你不能用


placeAlatitude = placeA.getLatitude()

placeBlatitude = placeB.getLatitude() 

placeAlatitude 和 placeBlatitude 必須定義模型的類型。你不能簡單地返回值。


通過分析您的模型,這兩個字段不是必需的,它是冗余值(placeAlongitude 和 placeBlongitude 的情況相同)。您定義了與位置的外鍵關系。因此,您可以使用該關系訪問經度和緯度。



查看完整回答
反對 回復 2021-08-03
  • 2 回答
  • 0 關注
  • 169 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號