Как я могу использовать verbose_name модели Django в определении поля?
У меня следующая модель:
# models.py
#==============================================================================
from django.db import models
class Foo(models.Model):
...
exists = models.BooleanField(
verbose_name = 'The Foo still exists.',
default = True
)
...
Я хотел бы использовать verbose_name вместо 'Foo', чтобы моя модель выглядела примерно так:
# models.py
#==============================================================================
from django.db import models
class Foo(models.Model):
...
exists = models.BooleanField(
verbose_name = f'The {self._meta.verbose_name} still exists.',
default = True
)
...
Очевидно, что это не работает так, как написано, поскольку self не существует в этом контексте. Я попробовал следующий вариант, который, похоже, сработал:
# models.py
#==============================================================================
from django.db import models
class Foo(models.Model):
...
def __init__(self,*args,**kwargs):
super().init(*args,**kwargs)
self.exists = models.BooleanField(
verbose_name = f'The {self._meta.verbose_name} still exists.',
default = True
)
...
Однако, когда я попробовал Foo.save(), у меня получилось django.core.exceptions.FieldError: Invalid field name(s) for model Foo: 'exists'. В конечном итоге, я намереваюсь сделать Foo абстрактной моделью для наследования другими моделями (что не является вопросом здесь, просто некоторый дополнительный контекст).
Вопрос в том, как я могу использовать verbose_name модели в определении поля?