Django: значение поля по умолчанию из экземпляров собственной модели
Как я могу сделать значение по умолчанию для поля, которое будет взято из существующих объектов модели?
Я попробовал это, и это не сработало:
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, пока интерпретатор не пройдет через весь класс.
Так как я должен подойти к этому?