Używam Django 1.7.1 i PIP zainstalowane Django filtry do mojego wirtualnego env w /.virtualenvs/auction2/lib/python2.7/site-packages$
ImportError: nie moduł o nazwie django_filters
Mówi się, że został pomyślnie zainstalowany.
Więc umieszczone Django filtrów zainstalowanych aplikacji tak:
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',
)
wpadłem python manage.py runserver
i dostał ten błąd:
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
Mówi on zainstalowany, ale dlaczego nie można go import to? Mam inny pakiet, chrupiące formularze, zainstalowane i działające. Spojrzałem na mojej stronie pakietów w środowisku wirtualnym i widziałem:
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
Widząc, że to idzie w jako „filtrów” zamiast co dokumentacja mówi importować go jako (django_filters), pomyślałem, że spróbuję zmieniając go na "filtry" w installed_apps.
ja zatykać i rozpoczął runserver, nie ma problemu, więc zacząłem budowy mój filtr w 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'})
zatrzymać i uruchomić runserver, nie ma problemu. Potem rozpocząć dodawanie widok i tylko instrukcję import w views.py:
from donations.filters import DonorFilter
daje mi ten sam ImportError: No module named django_filters.
błąd.
Próbowałem zmienić import w moich filters.py na filtry zamiast django_filters i błędy się nie zmieniły. Zmieniłem wszystko z powrotem na django_filters (w installed_apps i my filters.py), jak mówi dokumentacja, po dodaniu widoku pojawia się błąd global name 'DonorFilter' is not defined
. Oto view.py:
def donor_list(request):
f = DonorFilter(request.GET, queryset=Donor.objects.all())
return render_to_response('donations/donor_list', {'filter': f})
Oznacza to, że muszę zaimportować funkcję, którą utworzyłem w filters.py? Dlatego dodam from donations.filters import DonorFilter
u góry mojego widoku. Następnie błąd jest 'module' object has no attribute 'FilterSet'
widzę klasę FilterSet w pliku filters.py zainstalowanego w moim virtualenv
Zauważyłem, że jest bardziej na rozwój Django filtrem, strona https://github.com/alex/django-filter podchodzi do v0.9.2 , ale pip instaluje 0.1.0. Czy powinienem instalować go w inny sposób (inny niż pip)?
Jestem bardzo nowy i doceniam każdą pomoc!
Ok, jeden krok na raz. Jest tak wiele błędów, że trudno jest odpowiedzieć tylko na One. Po pierwsze, jeśli umieścisz plik settings.py w 'INSTALLED_APPS' aplikacji 'filters', a w twoim .py zaimportujesz' filters' zamiast django_filter, co się stanie? – RafaelC
Dziękuję, wiem, że mam duży bałagan! Jeśli umieściłem "filtry" w 'INSTALLED_APPS' w settings.py i' filtry importu 'w moich filters.py, to błędy zniknęły. Mogę uzyskać dostęp do mojej aplikacji, ale nie ma filtra na stronie. Przycisk przesyłania filtra istnieje, ale nic więcej. –
Do kogoś innego przyklejonego: upewnij się, że nie próbujesz importować 'django-filter' (zwróć uwagę na myślnik zamiast podkreślenia). –