Django 1.7.1を使用しており、/.virtualenvs/auction2/lib/python2.7/site-packages$
の仮想環境にDjangoフィルターをインストールしました。
正常にインストールされたという。
だから私はインストールされたアプリに次のようにDjangoフィルターを配置しました:
INSTALLED_APPS = (
'Django.contrib.admin',
'Django.contrib.auth',
'Django.contrib.contenttypes',
'Django.contrib.sessions',
'Django.contrib.messages',
'Django.contrib.staticfiles',
'crispy_forms',
'Django_filters',
'donations',
)
python manage.py runserver
を実行して、次のエラーが表示されました。
Traceback (most recent call last):
File "manage.py", line 10, in <module>
execute_from_command_line(sys.argv)
File "/Users/Dani/.virtualenvs/auction2/lib/python2.7/site-packages/Django/core/management/__init__.py", line 385, in execute_from_command_line
utility.execute()
File "/Users/Dani/.virtualenvs/auction2/lib/python2.7/site-packages/Django/core/management/__init__.py", line 354, in execute
Django.setup()
File "/Users/Dani/.virtualenvs/auction2/lib/python2.7/site-packages/Django/__init__.py", line 21, in setup
apps.populate(settings.INSTALLED_APPS)
File "/Users/Dani/.virtualenvs/auction2/lib/python2.7/site-packages/Django/apps/registry.py", line 85, in populate
app_config = AppConfig.create(entry)
File "/Users/Dani/.virtualenvs/auction2/lib/python2.7/site-packages/Django/apps/config.py", line 87, in create
module = import_module(entry)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/importlib/__init__.py", line 37, in import_module
__import__(name)
ImportError: No module named Django_filters
それはインストールしたと言っていましたが、なぜそれをインポートできないのですか?私は別のパッケージcrispy-formsをインストールして動作しています。仮想環境で自分のサイトパッケージを見て、私は見ました:
crispy_forms
Django
django_braces-1.4.0.dist-info
Django_crispy_forms-1.4.0-py2.7.Egg-info
Django_filters-0.1.0-py2.7.Egg-info
easy_install.py
easy_install.pyc
filters
pip
ドキュメントが(Django_filters)としてインポートするように言っているのではなく、「フィルター」として入っているのを見て、installed_appsで単に「フィルター」に変更してみようと思いました。
ランサーバーを停止して起動しましたが、問題ありませんでしたので、filter.py
でフィルターの構築を開始しました。
import Django_filters
from donations.models import Donor, Item, Issue
class DonorFilter(Django_filters.FilterSet):
class Meta:
model = Donor
fields = {'type':['exact'],'donor':['icontains'],}
def __init__(self, *args, **kwargs):
super(DonorFilter, self).__init__(*args, **kwargs)
self.filters['type'].extra.update(
{'empty_label': 'All Types'})
Runserverを停止して起動しても問題ありません。次に、views.pyでビューとimportステートメントの追加を開始します。
from donations.filters import DonorFilter
同じImportError: No module named Django_filters.
エラーが発生します。
Filters.pyのインポートをDjango_filtersではなくフィルターに変更してみましたが、エラーは変わりませんでした。ドキュメントの指示に従って、すべてをDjango_filters(installed_appsおよびfilters.py内)に戻しました。ビューを追加するとglobal name 'DonorFilter' is not defined
エラーが発生します。 view.pyは次のとおりです。
def donor_list(request):
f = DonorFilter(request.GET, queryset=Donor.objects.all())
return render_to_response('donations/donor_list', {'filter': f})
つまり、filters.pyで作成した関数をインポートする必要がありますか?そこで、ビューの上部にfrom donations.filters import DonorFilter
を追加します。エラーは'module' object has no attribute 'FilterSet'
です
Virtualenvにインストールされているfilters.pyファイルでFilterSetクラスを確認できます。
Django-filterの開発が進んでいることに気付きました。 https://github.com/alex/Django-filter ページはv0.9.2になりますが、pipは0.1.0をインストールします。別の方法でインストールする必要がありますか(pip以外)?
私はこれに非常に新しいので、助けてくれてありがとう!
私のpipバージョンは古く、本当に古いものでした。 1.5.6私が仮想環境をインストールしたとき、それはちょうど動いたので、私は質問しませんでした。学んだ教訓!これが他の人を助けるために私がしたことです...
仮想環境で、ドキュメントの説明に従ってpipをインストールしました。 https://pip.pypa.io/en/stable/installing.htmlpython get-pip.py
これにより、pip 6.1にアップグレードされました。 1
pip install Django-filter
pip freeze > requirements.txt
Requirements.txtを読むと、私が持っていたことが示されました
Django-filter==0.9.2
Django-filters==0.1.0
そこで、pip uninstall Django-filters
で古いバージョンをアンインストールしました
古いバージョンのsに注意してくださいが、新しいバージョンにはありません
本当に基本的なものですが、本当につまずきました。これを調べるのに時間をかけた人に感謝します!
私も同じ問題を抱えていました。 Django-filters
をインストールした後でもインポートできませんでした
ImportError:Django_filtersというモジュールはありません
Django使用しているバージョンは1.8で、pythonバージョンは2.7.xです
溶液 djangorestframework-filters
をインストールすることです
pip install djangorestframework-filters
名前は非常に紛らわしいです。
ただし、Django-rest-framework-filters
は、DjangoRESTフレームワークおよびDjango Django-filter
は再利用可能なDjango=アプリケーションであり、ユーザーはURLパラメータから動的なクエリセットフィルタリングを宣言的に追加できます。
Django 1.7、djangorestframework == 3.2.0および最新のDjango-filter == 0.13.0を使用して同様の問題が発生しました。
Using DjangoFilterBackend, but Django-filter is not installed
cannot import name Expression
最後にDjango-filterを0.11にダウングレードすることで修正しました。
これで、pip freezeは次のようになり、機能します。
Django==1.7
Django-filter==0.11.0
djangorestframework==3.2.0
インストール済みアプリでDjango_filter
からDjango_filters
に変更しましたが、問題ありませんでした。
また、Django-filter == 2.2.0のインストール時にこの問題が発生しました
これは私のDjangoバージョン:
Django [required: >=1.11, installed: 2.2]
settings.py:
INSTALLED_APPS = [
# ...
'Django_filters',
]
私は誤ってインストールしました:
pipenv install Django_filters
これは正しいインストールです。
pipenv install Django-filter
それが役に立てば幸い。