【发布时间】:2011-04-04 04:22:41
【问题描述】:
如何从模型的现有对象中获取字段的默认值?
我尝试了这些,但没有成功:
1)
class ModelA(models.Model):
fieldA = models.CharField(default=self.get_previous())
def get_previous(self):
return ModelA.objects.all()[0].fieldA
NameError: name 'self' is not defined
2)
class ModelA(models.Model):
fieldA = models.CharField(default=ModelA.get_previous())
@staticmethod
def get_previous():
return ModelA.objects.all()[0].fieldA
NameError: name 'ModelA' is not defined
3)
class ModelA(models.Model):
fieldA = models.CharField(default=get_previous())
def get_previous():
return ModelA.objects.all()[0].fieldA
NameError: global name 'get_previous' is not defined
4)
def get_previous():
return ModelA.objects.all()[0].fieldA
class ModelA(models.Model):
fieldA = models.CharField(default=get_previous())
NameError: global name 'ModelA' is not defined
我很清楚为什么 3) 和 4) 不起作用。 我可以想象为什么 1) 不起作用 - 看起来类的属性不能引用实例的(即自我)。 我可以想象为什么 2) 不起作用 - 显然在解释器将通过整个课程之前没有对 ModelA 的引用。
那么我应该如何处理呢?
【问题讨论】: