Как мога да направя стойност по подразбиране за поле, което да бъде взето от съществуващи обекти на модел?
Пробвах тези и не се получи:
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, докато интерпретаторът не премине през целия клас.
И така, как да подходя към това?