zoukankan      html  css  js  c++  java
  • 使用自定义的 Manager

    class CategoryManager(models.Manager):
        """
        A manager that adds an "active()" method for all active categories
        """
        def active(self):
            """
            Only categories that are active
            """
            return self.get_query_set().filter(active=True)
    
    
    class CategoryBase(MPTTModel):
        """
        This base model includes the absolute bare bones fields and methods. One
        could simply subclass this model and do nothing else and it should work.
        """
        parent = TreeForeignKey('self',
            blank=True,
            null=True,
            related_name='children',
            verbose_name=_('parent'))
        name = models.CharField(max_length=100, verbose_name=_('name'))
        slug = models.SlugField(verbose_name=_('slug'))
        active = models.BooleanField(default=True, verbose_name=_('active'))
    
        objects = CategoryManager()
        tree = TreeManager()
    
        def save(self, *args, **kwargs):
            """
            While you can activate an item without activating its descendants,
            It doesn't make sense that you can deactivate an item and have its
            decendants remain active.
            """
            if not self.slug:
                self.slug = slugify(SLUG_TRANSLITERATOR(self.name))[:50]
    
            super(CategoryBase, self).save(*args, **kwargs)
    
            if not self.active:
                for item in self.get_descendants():
                    if item.active != self.active:
                        item.active = self.active
                        item.save()
    
        def __unicode__(self):
            ancestors = self.get_ancestors()
            return ' > '.join([force_unicode(i.name) for i in ancestors] + [self.name, ])
    
        class Meta:
            abstract = True
            unique_together = ('parent', 'name')
            ordering = ('tree_id', 'lft')
    
        class MPTTMeta:
            order_insertion_by = 'name'

    http://www.oschina.net/translate/higher-level-query-api-django-orm


    http://www.nanerbang.com/article/34/

    这里的貌似也不错

    from django.db import models
    
    class PublicArticleManager(models.Manager):
        def get_query_set(self):
            return super(PublicArticleManager, self).get_query_set().filter(public = True)
    
    class Article(models.Model):
        #...
        public =  models.BooleanField('是否发表', default = False)
    
        objects = models.Manager()
        public_articles = PublicArticleManager()
  • 相关阅读:
    xcode debug
    ios 使用Quartz 2D画虚线
    ios UIGestureRecognizer
    ios 实现带矩形框的屏幕截图
    ios UISegemetedControl
    centos最小安装之后无法使用ifconfig
    无线LoRa智能远传水表
    智能水表188协议汇总
    无线LoRa远传智能水表
    静电除尘器除尘原理
  • 原文地址:https://www.cnblogs.com/tk091/p/4331339.html
Copyright © 2011-2022 走看看