2017-08-07 29 views
0

古いバージョンの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に問題があるのか​​分かりません。

どうすればこの問題を解決できるでしょうか?

答えて

0

django-timedelta-fieldパッケージはDjango 1.10+では動作しません。 django-timedelta-fieldレポから:

If you are using Django 1.8 or greater (and you really should be), then you should use the included DurationField() instead of this.

This field does not work with Django 1.10, and will probably not be updated to fix the issue(s).

ここ1.8 release notesからSubFieldBaseの非推奨の説明があります。

+0

はい、そのコードはdjangoモジュールの内部にあります。私のプロジェクトではありません。 これを変更するにはどうすればよいですか? 私は 'fromfields import TimedeltaFieldファイル" /usr/local/lib/python2.7/dist-packages/timedelta/fields.py "、18行目、' – Ahmedn1

+0

私はあなたの質問を理解していません。アドバイスは、Django 1.10+で 'django-timedelta-field'の代わりに' DurationField() 'を使うことです。 django-timedelta-fieldを使いたい場合は、リポジトリをクローンし、コードを修正してからインストールする必要があります。 – Alasdair

+0

私はそれを得ました。 timedeltaのすべてのインポートを削除し、代わりにmodels.DurationFieldをマイグレーションファイルで使用しました。 これで問題は解決しました。 – Ahmedn1

関連する問題