Django. Проблема обращения менеджера объектов модели внутри самой модели

Генерируется исключение при обращении к таблице БД изнутри одноимённой модели:

Traceback (most recent call last): File "...\manage.py", line 17, in <module>
    execute_from_command_line(sys.argv)
File "...\Django_env\lib\site-packages\django\core\management\__init__.py", line 401, in execute_from_command_line utility.execute()
File "...\Django_env\lib\site-packages\django\core\management\__init__.py", line 377, in execute django.setup()
File "...\Django_env\lib\site-packages\django\__init__.py", line 24, in setup apps.populate(settings.INSTALLED_APPS)
File "...\Django_env\lib\site-packages\django\apps\registry.py", line 114, in populate app_config.import_models()
File "...\Django_env\lib\site-packages\django\apps\config.py", line 211, in import_models self.models_module = import_module(models_module_name)
File "...\lib\importlib\__init__.py", line 127, in import_module return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 1006, in _gcd_import
File "<frozen importlib._bootstrap>", line 983, in _find_and_load
File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 677, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 728, in exec_module
File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
File "...\models.py", line 142, in <module> class EntryType(models.Model):
File "...\models.py", line 148, in EntryType
    ENTRY_TYPES_DICT = get_etypes() 
File "...\models.py", line 145, in get_etypes
            records = EntryType.objects.filter()
        NameError: name 'EntryType' is not defined
        Сборка проекта "Entries 2020.pyproj" завершена с ошибкой.

Описание класса модели:

class EntryType(models.Model):
    ''' Модель типов '''
    def get_etypes():
        records = EntryType.objects.filter()
        return { record.dictKey: (record.shortName, record.fullName) for record in records }

    fullName = models.CharField("Тип заявки", max_length=100, default='')
    shortName = models.CharField("Абревиатура типа", max_length=7, default='')
    dictKey = models.CharField("Ключ идентификации", max_length=7, default='')

    def __str__(self):
        return "Тип заявки: {0}".format(self.fullName)

При этом проверены все имена 'EntryType' на корректность синтаксиса. Кроме того, такой подход используется и внутри других моделей приложения, например:

class Entry(models.Model):
    ...
    def save():
        ... 
        entry = Entry.objects.get(pk=self.id)
        ...

В чём здеcь может быть проблема??


Ответы (0 шт):