Проблема импорта ModelResource из tastypie.resources
Добрый день, я сейчас на середине практического проекта для django и не могу найти решение проблемы при создании api с помощью tastypie. Я сейчас нахожусь в середине обучения, поэтому любая помощь будет оценена по достоинству. Я использую django 4.0 и tastypie 2.8.2.
Вот код, который, похоже, является проблемой:
from django.db import models
from tastypie.resources import ModelResource
Вот полная ошибка, которую я получаю при попытке выполнить python3 manage.py runserver на моем venv:
> Exception in thread django-main-thread: Traceback (most recent call
> last): File "/usr/lib/python3.9/threading.py", line 954, in
> _bootstrap_inner
> self.run() File "/usr/lib/python3.9/threading.py", line 892, in run
> self._target(*self._args, **self._kwargs) File "/home/user/.local/share/virtualenv-path/lib/python3.9/site-packages/django/utils/autoreload.py",
> line 64, in wrapper
> fn(*args, **kwargs) File "/home/user/.local/share/virtualenv-path/lib/python3.9/site-packages/django/core/management/commands/runserver.py",
> line 115, in inner_run
> autoreload.raise_last_exception() File "/home/user/.local/share/virtualenv-path/lib/python3.9/site-packages/django/utils/autoreload.py",
> line 87, in raise_last_exception
> raise _exception[1] File "/home/user/.local/share/virtualenv-path/lib/python3.9/site-packages/django/core/management/__init__.py", line 381, in execute
> autoreload.check_errors(django.setup)() File "/home/user/.local/share/virtualenv-path/lib/python3.9/site-packages/django/utils/autoreload.py",
> line 64, in wrapper
> fn(*args, **kwargs) File "/home/user/.local/share/virtualenv-path/lib/python3.9/site-packages/django/__init__.py",
> line 24, in setup
> apps.populate(settings.INSTALLED_APPS) File "/home/user/.local/share/virtualenv-path/lib/python3.9/site-packages/django/apps/registry.py",
> line 114, in populate
> app_config.import_models() File "/home/user/.local/share/virtualenv-path/lib/python3.9/site-packages/django/apps/config.py",
> line 300, in import_models
> self.models_module = import_module(models_module_name) File "/usr/lib/python3.9/importlib/__init__.py", line 127, in import_module
> return _bootstrap._gcd_import(name[level:], package, level) File "frozen importlib._bootstrap", line 1030, in _gcd_import File
> "frozen importlib._bootstrap", line 1007, in _find_and_load File
> "frozen importlib._bootstrap", line 986, in _find_and_load_unlocked
> File "frozen importlib._bootstrap", line 680, in _load_unlocked File
> "frozen importlib._bootstrap_external", line 790, in exec_module
> File "frozen importlib._bootstrap", line 228, in
> _call_with_frames_removed **File "/home/user/myapp/api/models.py", line 2, in module**
> from tastypie.resources import ModelResource File "/home/user/.local/share/virtualenv-path/lib/python3.9/site-packages/tastypie/resources.py",
> line 13, in module
> from django.conf.urls import url ImportError: cannot import name 'url' from 'django.conf.urls'
> (/home/user/.local/share/virtualenv-path/lib/python3.9/site-packages/django/conf/urls/__init__.py)
После небольшого поиска я обнаружил, что некоторые люди смогли решить эту проблему, заменив "url" на "re_path" при импорте, однако это, похоже, не работает для меня.
Вот как выглядит мой файл resources.py до ошибки импорта:
from __future__ import unicode_literals
from copy import copy, deepcopy
from datetime import datetime
import logging
import sys
from time import mktime
import traceback
import warnings
from wsgiref.handlers import format_date_time
from django.conf import settings
from django.conf.urls import url
Решением, очевидно, было изменение последней строки на from django.conf.urls import re_path, но теперь я получаю ошибку "from django.conf.urls import url ImportError: cannot import name 're_path' from 'django.conf.urls'". Похоже, проблема начинается, когда я импортирую ModelResource из каталога tastypie/resources, поэтому я проверил файл ресурсов для класса ModelResource и обнаружил, что он пуст:
class ModelResource(six.with_metaclass(ModelDeclarativeMetaclass, BaseModelResource)):
pass
Я не уверен, что это может быть как-то связано, так как все было именно так после установки. Все пакеты были установлены внутри venv.
Опять же, я сейчас нахожусь в середине обучения, поэтому любая помощь будет глубоко признательна.