使用django字段的属性会导致无限循环

时间:2015-11-22 17:41:22

标签: python django

我正在尝试让我的模型中的字段写入一次并在之后只读取。我想出的解决方案是使用属性装饰器。请告诉我,如果有更好的解决方案,我是django的新手。当我尝试在django shell中实例化模型时,我进入了一个无限循环。

class MapPointable(models.Model):
loc_latitude = models.FloatField(null = True)
loc_longtitude = models.FloatField(null = True)

@property
def loc_latitude(self):
    return self.loc_latitude

@loc_latitude.setter
def loc_latitude(self, value):
    if self.loc_latitude == None:
        self.loc_latitude = value
    else:
        raise ValueError("Read-only field, the value cannot be set")

@property
def loc_longtitude(self):
    return self.loc_longtitude

@loc_longtitude.setter
def loc_longtitude(self, value):
    if self.loc_longtitude == None:
        self.loc_longtitude = value
    else:
        raise ValueError("Read-only field, the value cannot be set")

1 个答案:

答案 0 :(得分:1)

您的媒体资源的名称与模型字段的名称相同。它应该是:

@property
def loc_latitude_prop(self):
    return self.loc_latitude

@loc_latitude_prop.setter
def set_loc_latitude(self, value):
    #...

否则他们开始互相打电话,你会陷入无限循环......

但是我不会在django中使用属性,因为django在ORM中不识别这些,它只知道django字段