我使用的是Django 1.7.1,我通过pip将Django-filter安装到我的虚拟环境/.virtualenvs/auction2/lib/python2.7/site-packages$
该公司表示,它已成功安装.
因此,我在已安装的应用程序中放置了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
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
看到它作为"Filters"进入,而不是文档所说的导入为(Django_Filters),我想我应该try 在Installed_apps中将其更改为"Filters".
我停止并启动了运行服务器,没有问题,所以我开始在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.
错误.
我try 在过滤器中更改导入.py是过滤器,而不是django_过滤器,错误没有改变.我把所有内容都改回了django_过滤器(在已安装的_应用程序和my filters.py中),正如文档所说的那样,添加视图时会出现错误global name 'DonorFilter' is not defined
.这里是风景.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 -过滤上有更多的开发,https://github.com/alex/django-filter页上升到0.9.2版,但是pip安装的是0.1.0版.我应该用另一种方式(而不是pip)安装它吗?
我是新手,非常感谢大家的帮助!