zoukankan      html  css  js  c++  java
  • 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相同的方法:

  • 相关阅读:
    叨叨叨
    四舍五入VS银行家舍入
    是雏还是鹰——编程规范之变量命名
    .Net下二进制形式的文件(图片)的存储与读取(原创)
    asp.net中<%%>形式的用法(原创)
    让Hashtable支持自定义排序(原创)
    .NET下的迭代器(Iterator)模式
    本地视频播放-ios
    cocos2dx srand(time(NULL))重新设置一个随机种子
    cocos2dx 游戏重置方法
  • 原文地址:https://www.cnblogs.com/yuruhao/p/7065675.html
Copyright © 2011-2022 走看看