Ich versuche, meinen eigenen Blog mit Django zu tun. Ich habe eine Ansicht, um einen Artikel anzuzeigen, der von DetailView erweitert wird. Um Probleme mit Nacktschnecken zu vermeiden, versuche ich die Artikel mit dem Erscheinungsdatum zu klassifizieren. Die URL für einen Artikel ist wie so (wobei pk zum Slug des Artikels entsprechen):Django AttributeError Modell Objekt hat kein Attribut 'Filter'
r'articles/(?P<year>\d{4})/(?P<month>\d{2})/(?P<day>\d{2})/(?P<pk>[\w-]+)/$'
Aus meiner Sicht möchte ich dies tun:
def get_queryset(self):
year = self.kwargs.get("year", None)
month = self.kwargs.get("month", None)
day = self.kwargs.get("day", None)
publication_date = year + "-" + month + "-" + day
return Article.objects.get(created_at__startswith=publication_date, slug=self.kwargs.get("pk", None))
Aber es funktioniert nicht und ich verstehe es nicht ... In der Tat funktioniert es, wenn ich dies tun:
return Article.objects.filter(created_at__startswith=publication_date, slug=self.kwargs.get("pk", None))
Aber es gibt einen QuerySet und ich möchte nur einen Artikel! ([0] gibt die gleichen Fehler)
Hier ist der Fehler:
AttributeError at /articles/2015/03/04/nouveau-site/
'Article' object has no attribute 'filter'
Django Version: 1.6.2
Exception Location: C:\Python27\lib\site-packages\django\views\generic\detail.py in get_object, line 37
Python Version: 2.7.6
und die volle Zurückverfolgungs:
Environment:
Request Method: GET
Request URL: http://localhost:8000/articles/2015/03/04/nouveau-site/
Django Version: 1.6.2
Python Version: 2.7.6
Installed Applications:
('django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'groups',
'posts',
'users')
Installed Middleware:
('django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware')
Traceback:
File "C:\Python27\lib\site-packages\django\core\handlers\base.py" in get_response
114. response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "C:\Python27\lib\site-packages\django\views\generic\base.py" in view
69. return self.dispatch(request, *args, **kwargs)
File "C:\Python27\lib\site-packages\django\views\generic\base.py" in dispatch
87. return handler(request, *args, **kwargs)
File "C:\Python27\lib\site-packages\django\views\generic\detail.py" in get
110. self.object = self.get_object()
File "C:\Python27\lib\site-packages\django\views\generic\detail.py" in get_object
37. queryset = queryset.filter(pk=pk)
Exception Type: AttributeError at /articles/2015/03/04/nouveau-site/
Exception Value: 'Article' object has no attribute 'filter'
Vielen Dank im Voraus!
Die Frage ist: '.get()' ein Modellobjekt gibt, und 'get_queryset' erwartet ein' queryset' zurückgegeben werden. Daher der Fehler. – karthikr