Django定制模型管理器

objects是检索数据库中所有对象的每个模型的默认管理器。然而,也可以为我们的模型定义自定义管理器。

比如创建一个自定义管理器来检索具有发布状态的所有帖子。关于blog的模型,可以参考

Django数据模型代码片段-CSDN博客

📌使用Post.published.all()替代Post.objects.filter(publish='published')

编辑models.py

python 复制代码
class PublishedManager(models.Manager):
    def get_queryset(self):
        return super(PublishedManager,self).get_queryset().filter(status='published')

class Post(models.Model):

    ...

    objects = models.Manager()
    published = PublishedManager()

    ...

管理器的get_queryset()方法返回将要执行的QuerySet。重写此方法,以便在最终的QuerySet中包含自定义过滤器。

下面用通用视图创建blog列表。关于通用视图,更多内容请看

Django通用视图-CSDN博客

编辑views.py

python 复制代码
...
from django.views.generic import ListView
from .models import Post

class PostListView(ListView):
    queryset = Post.published.all()
    context_object_name = "posts"
    paginate_by = 3
    template_name = "blog/post/list.html"

添加URL路径

python 复制代码
from django.urls import path
from . import views

app_name = "blog"
urlpatterns = [
    path("", views.PostListView.as_view(), name="post_list"),
]
相关推荐
米小虾17 分钟前
从 Chatbot 到 Agent:AI 智能体架构设计的 5 个关键模式
后端
星浩AI32 分钟前
清华团队开源!我给孩子制作了 AI 互动课堂,手把手教你给孩子做一个
人工智能·后端·github
编程小风筝38 分钟前
如何用redission实现springboot的分布式锁?
spring boot·分布式·后端
代码探秘者1 小时前
【大模型应用】4.分块之六大策略
java·数据结构·后端·python·spring
那我掉的头发算什么1 小时前
【博客系统】基于Spring全家桶的博客系统(下)
java·后端·spring·mybatis·开发
齐齐大魔王1 小时前
虚拟机网络无法连接
linux·网络·c++·python·ubuntu
ycjunhua1 小时前
Notebooklm for windows本地安装使用
python·webstorm
曲辕RPA1 小时前
GEO技术解析:RPA在生成引擎优化中的角色与应用
python·ai·rpa
2401_894241921 小时前
实战:用OpenCV和Python进行人脸识别
jvm·数据库·python
Oneslide1 小时前
Pod启动失败: /var/lib/kubelet/xxx/kube-api-access/ :no space left on device
后端