Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python DetailView显示布尔属性设置为True的模型_Python_Django_Detailview_Class Based Views_Website Homepage - Fatal编程技术网

Python DetailView显示布尔属性设置为True的模型

Python DetailView显示布尔属性设置为True的模型,python,django,detailview,class-based-views,website-homepage,Python,Django,Detailview,Class Based Views,Website Homepage,我正在创建一个Django web应用程序,并试图将页面模型设置为主页(根目录下的页面) 只能有一个主页模型,通过将homepage变量设置为true来设置主页。如果设置为true,则会将上一个主页设置为false # models.py class Page(models.Model): title = models.CharField(max_length=255) author = models.ForeignKey(User, on_delete=models.CASCA

我正在创建一个Django web应用程序,并试图将页面模型设置为主页(根目录下的页面)

只能有一个主页模型,通过将
homepage
变量设置为true来设置主页。如果设置为true,则会将上一个主页设置为false

# models.py
class Page(models.Model):
    title = models.CharField(max_length=255)
    author = models.ForeignKey(User, on_delete=models.CASCADE)
    body = models.TextField()
    homepage = models.BooleanField(default=False)

    def save(self, *args, **kwargs):
        if not self.homepage:
            return super(Page, self).save(*args, **kwargs)
        with transaction.atomic():
            Page.objects.filter(
                homepage=True).update(homepage=False)
            return super(Page, self).save(*args, **kwargs)

    def __str__(self):
        # return self.title + '   |   ' + str(self.author)
        return self.title
在myviews.py脚本中,我试图获取具有
homepage=True
的模型,并将其显示为详细视图

# urls.py
urlpatterns = [
    ...
    path('', HomePage.as_view(), name="home"),
    ...
]

我做错了什么?如何解决这个问题?

我认为错误在这里:

# views.py
class HomePage(DetailView):
    model = Page.objects.filter(homepage=True)
    template_name = 'home.html'
在model字段中,您必须传递一个模型,如果您想通过传递一个过滤的queryset来更改上下文数据,您必须通过


我已经按照您的建议修改了HomePage类,现在我遇到了一个不同的错误:
必须使用URLconf中的对象pk或slug调用Generic detail view HomePage。
。如何修复此问题?我将
get\u queryset(self)
更改为
get\u object(self)
。现在显示page.html页面,但是没有显示
{{page.body}
,只有h1标记被呈现到屏幕上,而不是使用TemplateView尝试更新视图。使用
get_queryset(self)
方法并使用
TemplateView
显示home.html页面,但未呈现
{{home.body}
,在pk或urlconf方面没有任何要求,如何修复此问题?除非更改TemplateView中的context_object_name字段,否则将使用{{object.body}呈现该字段。如果要保持{{home.body}},请在视图中写入:context_object_name=“home”
<!-- home.html -->
<h1>Home</h1>

{{ page.body }}
AttributeError at /
'QuerySet' object has no attribute '_default_manager'
# views.py
class HomePage(DetailView):
    model = Page.objects.filter(homepage=True)
    template_name = 'home.html'
# views.py
class HomePage(DetailView):
    model = Page
    template_name = 'home.html'
    
    def get_queryset(self):
        return Page.objects.filter(homepage=True)