拥有一个最多包含 5 个项目的博客

我目前有这个博客,但我想在某种程度上限制它:


模型.py


class Post(models.Model):

    title = models.CharField(max_length=200)

    author = models.ForeignKey(

        'auth.User',

        on_delete=models.CASCADE,

    )

    body = models.TextField()


    def __str__(self):

        return self.title


    def get_absolute_url(self):

        return reverse('post_detail', args=[str(self.id)])

视图.py


class BlogListView(ListView):

    model = Post

    template_name = 'home.html'



class BlogDetailView(DetailView):

    model = Post

    template_name = 'post_detail.html'



class BlogCreateView(CreateView):

    model = Post

    template_name = 'post_new.html'

    fields = ['title', 'author', 'body']



class BlogUpdateView(UpdateView):

    model = Post

    template_name = 'post_edit.html'

    fields = ['title', 'body']



class BlogDeleteView(DeleteView):

    model = Post

    template_name = 'post_delete.html'

    success_url = reverse_lazy('home')

网址.py


from .views import (

    BlogListView,

    BlogDetailView,

    BlogCreateView,

    BlogUpdateView,

    BlogDeleteView,

)


urlpatterns = [

    path('post/<int:pk>/delete/',

         BlogDeleteView.as_view(), name='post_delete'),

    path('post/<int:pk>/edit',

         BlogUpdateView.as_view(), name='post_edit'),

    path('post/new/', BlogCreateView.as_view(), name='post_new'),

    path('post/<int:pk>/', BlogDetailView.as_view(), name='post_detail'),

    path('', BlogListView.as_view(), name='home'),

]

是否可以创建一个最多只允许 5 个项目的 Django blod,并且在第 5 个项目之后添加的任何内容都应该覆盖最旧的项目?如果是这样,它是如何完成的?


largeQ
浏览 122回答 1
1回答

慕哥9229398

你已经回答了你自己的问题。发布新博客项目时,只需找到最近的五个帖子(包括刚刚发布的帖子)并删除(或标记为隐藏)所有其他帖子。我发现简单地不允许访问较旧的博客文章而只检索最近的五篇文章会更有意义。这将使您可以将所有旧博客帖子作为员工的档案保存并防止意外删除。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python