古いバージョンのdjangoを使用して作成されたdjangoプロジェクトに取り組んでいます。私の環境は、最新のdjangoバージョン(1.11.4)用に設定されています。私はpython manage.py runserver
をしようとすると 、私はこれを取得:Django AttributeError: 'module'オブジェクトに 'SubfieldBase'属性がありません
Unhandled exception in thread started by Traceback (most recent call last): File
"/usr/local/lib/python2.7/dist-packages/django/utils/autoreload.py", line 228, in wrapper
fn(*args, **kwargs) File "/usr/local/lib/python2.7/dist-packages/django/core/management/commands/runserver.py",
line 117, in inner_run
autoreload.raise_last_exception() File "/usr/local/lib/python2.7/dist-packages/django/utils/autoreload.py",
line 251, in raise_last_exception
six.reraise(*_exception) File "/usr/local/lib/python2.7/dist-packages/django/utils/autoreload.py",
line 228, in wrapper
fn(*args, **kwargs) File "/usr/local/lib/python2.7/dist-packages/django/__init__.py", line 27,
in setup
apps.populate(settings.INSTALLED_APPS) File "/usr/local/lib/python2.7/dist-packages/django/apps/registry.py", line
108, in populate
app_config.import_models() File "/usr/local/lib/python2.7/dist-packages/django/apps/config.py", line
202, in import_models
self.models_module = import_module(models_module_name) File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module __import__(name) File
"/home/ahmedn1/Documents/Paymob/wallet_executive_panel-master-c109bd6fe9cd1bf793c11a5c2e97d18a1887c3ba/accounts/models.py", line 8, in
import timedelta File "/usr/local/lib/python2.7/dist-packages/timedelta/__init__.py", line
11, in
from .fields import TimedeltaField File "/usr/local/lib/python2.7/dist-packages/timedelta/fields.py", line 18,
in
class TimedeltaField(six.with_metaclass(models.SubfieldBase, models.Field)): AttributeError: 'module' object has no attribute
'SubfieldBase'
だから、問題がジャンゴ・timedeltafieldパッケージにあるようです。私はそのパッケージの最新バージョン(0.7.10)を持っています。だから、私はまだ非難されたSubfieldBaseに問題があるのか分かりません。
どうすればこの問題を解決できるでしょうか?
はい、そのコードはdjangoモジュールの内部にあります。私のプロジェクトではありません。 これを変更するにはどうすればよいですか? 私は 'fromfields import TimedeltaFieldファイル" /usr/local/lib/python2.7/dist-packages/timedelta/fields.py "、18行目、' – Ahmedn1
私はあなたの質問を理解していません。アドバイスは、Django 1.10+で 'django-timedelta-field'の代わりに' DurationField() 'を使うことです。 django-timedelta-fieldを使いたい場合は、リポジトリをクローンし、コードを修正してからインストールする必要があります。 – Alasdair
私はそれを得ました。 timedeltaのすべてのインポートを削除し、代わりにmodels.DurationFieldをマイグレーションファイルで使用しました。 これで問題は解決しました。 – Ahmedn1