我得到這個以下錯誤:的Django:的DetailView實現get_queryset()
ImproperlyConfigured at /elearning/7447932a-6044-498a-b902-97cbdd0a4001/
DetailView is missing a QuerySet. Define DetailView.model, DetailView.queryset, or override DetailView.get_queryset().
繼DetailView Django文檔,除非我要重寫它的get_query不是強制性的。
view.py
class CourseDetailView(DetailView):
model = Course
template_name='elearning/detail.html'
def get_object(self):
course = get_object_or_404(Course, pk=self.kwargs['pk'])
return self.model.objects.filter(pk=pk)
def get_context_data(self, **kwargs):
context = super(CourseDetailView, self).get_context_data(**kwargs)
context['now'] = timezone.now()
return context
urls.py
url(r'^(?P<pk>[0-9a-z-]+)/$', views.DetailView.as_view(), name='course-detail'),
列表視圖模板
<a href="{% url 'elearning:course-detail' article.course_id %}">{{ article.title }}</a>
models.py
class Course(models.Model):
course_id = models.UUIDField(default=uuid.uuid4, editable=False)
...
我想知道爲什麼我應該實現一個get_queryset()?
我仍然得到同樣的錯誤,當我添加get_queryset()
def get_queryset(self):
qs = super(CourseDetailView, self).get_queryset()
return qs.filter(pk=self.kwargs['pk'])
我們可以看到你的DetailView類嗎? – shacker
@shacker你正確'DetailView'應該在urls.py上被命名爲'CourseDetailView' ..你可以發佈答案 –