我正在创建一个 Django Web 应用程序,并尝试将页面模型设置为主页(根目录中的页面)。
主页模型只能有一个,主页是通过将homepage
变量设置为true来设置的。设置一个为真,将上一个主页设置为假。
# 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
# views.py
class HomePage(DetailView):
model = Page.objects.filter(homepage=True)
template_name = 'home.html'
在我的views.py 脚本中,我试图获取具有homepage = True
并将其显示为DetailView 的模型。
# urls.py
urlpatterns = [
...
path('', HomePage.as_view(), name="home"),
...
]
<!-- home.html -->
<h1>Home</h1>
{{ page.body }}
不幸的是,我收到一个错误:
AttributeError at /
'QuerySet' object has no attribute '_default_manager'
我做错了什么,我该如何解决这个问题?