Django rest-api - attributeerror: объект 'str' не имеет атрибута '_meta'

Я получаю следующую ошибку при запуске manage.py в моем Django rest-api.

attributeerror: объект 'str' не имеет атрибута '_meta'

Отслеживание показывает следующее :

'' Traceback (последний последний вызов): Файл "/home/myproject/myproject-api/manage.py", строка 25, in execute_from_command_line(sys.argv)

File "/home/myEnv/lib/python3.9/site-packages/django/core/management/init.py", line 419, in execute_from_command_line utility.execute()

File "/home/myEnv/lib/python3.9/site-packages/django/core/management/init.py", line 395, in execute django.setup()

File "/home/myEnv/lib/python3.9/site-packages/django/init.py", line 24, in setup apps.populate(settings.INSTALLED_APPS)

File "/home/myEnv/lib/python3.9/site-packages/django/apps/registry.py", line 122, in populate app_config.ready()

<

Файл "/home/myEnv/lib/python3.9/site-packages/funcy/flow.py", строка 231, in wrapper return func(*args, **kwargs)

File "/home/myEnv/lib/python3.9/site-packages/cacheops/query.py", line 578, in install_cacheops opts = rel.through._meta AttributeError: объект 'str' не имеет атрибута '_meta'

''

Проблема заключалась в следующем. Мне пришлось установить

pip install django-cacheops==0.9.3

Это должно быть полезно всем, кто столкнулся с точно такой же ошибкой.

Ошибка, которую вы получаете от cacheops, похоже, связана с тем, что вы используете отношения "многие ко многим" с моделью through, где вы указываете модель through, передавая строку с ее именем вместо самого класса, потому что класс определен только ниже. Хотя это совершенно обычная практика, cacheops, похоже, требует, чтобы вы делали это по-другому:

А именно, попробуйте сослаться на вашу модель through, передав класс вместо строки с именем класса. Для этого вам нужно немного изменить порядок кода, поместив определение класса вашей through модели первым, что, конечно же, требует передачи строк вместо классов в ForeignKey. Например, сделайте это следующим образом:

class PostCategory(models.Model):
    post = models.ForeignKey('Post')
    category = models.ForeignKey('Category')

class Post(models.Model):
    pass

class Category(models.Model):
    posts = models.ManyToManyField(Post, through=PostCategory, related_name='categories')
Вернуться на верх