Django Queryset增加manager
**#定义一个新的过滤规则,这里是过滤状态为发布的帖子**
**class PublishedManager(models.Manager):**
**def get_queryset(self):**
**return super(PublishedManager,self).get_queryset().filter(status='published')**
class Post(models.Model):
STATUS_CHOICES = (
('draft','Draft'),('published','Published'),
)
title = models.CharField(max_length=250)
slug = models.SlugField(max_length=250,unique_for_date='publish')
author = models.ForeignKey(User,related_name='blog_posts')
body = models.TextField()
publish = models.DateTimeField(default=timezone.now)
created = models.DateTimeField(auto_now_add=True)
updated = models.DateTimeField(auto_now=True)
status = models.CharField(max_length=10,choices=STATUS_CHOICES,default='draft')
**objects = models.Manager() #默认manager**
**published = PublishedManager() #新添加的manager**
class Meta:
ordering = ('publish',)
def __str__(self):
return self.title
通过python manager.py shell就可以使用新添加manager:
由于在post添加了新的内容,需要重新引入Post
>>>from blog.models import Post
>>>Post.published.all()
这样就可以过滤出所有发布状态的帖子,并且可以使用Queryset相同的方法:
最新文章
- CPU的内部架构和工作原理
- 鸡和蛋的OO设计
- PHP回调函数的几种用法
- URAL 1080 Map Coloring(染色)
- 【原】Spark Standalone模式
- Xcode常见报错及解决办法
- WCF 用netTcpbinding,basicHttpBinding 传输大文件
- Android 应用程序签名
- MD5算法的原理与实现
- MapReduce框架Hadoop应用(一)
- LeetCode 203. Remove Linked List Elements 移除链表元素 C++/Java
- Linux下的java虚拟机性能监控与故障处理命令
- 表单中input name属性有无[]的区别
- lfs(systemd版本)学习笔记-第3页
- Selenium:利用select模块处理下拉框
- replace 将逗号替换~
- oracle exp imp日常使用
- Ruby:线程实现经典的生产者消费者问题
- Java 并发编程常识 —— by 梁飞
- 【进阶修炼】——改善C#程序质量(1)