Как я могу использовать 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 модели в определении поля?

Вернуться на верх