有人能给我一个快速的解释,关于我做错了什么,我得到了这个错误。我使用了DetailView
Views.py
from django.views.generic import ListView, DetailView
from main import models
class BlogDetail(DetailView):
model_name = models.BlogTitle
template_name = 'main/blog.html'
context_object_name = 'object'
def queryset(self):
return models.BlogTitle.objects.order_by('title')
models.py
from django.db import models
from django.contrib.auth.models import User
class BlogTitle(models.Model):
title = models.CharField(max_length = 64)
def __str__(self):
return self.title
class Blog(models.Model):
author = models.CharField(max_length = 64, default = False)
title = models.OneToOneField(BlogTitle, on_delete=models.CASCADE)
category = models.CharField(max_length = 64)
content = models.TextField()
def __str__(self):
return self.author
url.py
path('blogs/<int:pk>', auth(views.BlogDetail.as_view()), name = 'blog'),
blog.html
{% extends 'base.html' %}
{% block content %}
{{ object.title }}
{{ object.category }}
{{ object.content }}
{% endblock %}
我也试过这个,但没有成功
django附带的大多数通用视图混合提供了可重写的类属性^{} 和可重写的方法^{} 。因此,你可以:
或
通过混合命名,您的视图现在可以访问
self.queryset.all()
,但是由于self.queryset
现在是一个函数,您看到了错误。通常,在查询集不依赖于特定请求的情况下使用queryset
,在依赖于特定请求的情况下使用get_queryset
(正如您有权访问self.request
),或者如果出于某种原因,定义查询集已经需要执行数据库查询,则使用get_queryset
,或者使用的程度较低,但不应该在模块级别执行。对我来说,令人费解的是,您覆盖它只是为了更改顺序,这对于仅使用queryset提取单个实例的详细视图来说没有什么意义相关问题 更多 >
编程相关推荐