Metadata-Version: 1.0
Name: django-model-utils
Version: 0.3.0
Summary: Django model mixins and utilities
Home-page: http://launchpad.net/django-model-utils
Author: Carl Meyer
Author-email: carl@dirtcircle.com
License: UNKNOWN
Description: ==================
        django-model-utils
        ==================
        
        Django model mixins and utilities.
        
        models.InheritanceCastModel
        ===========================
        
        This abstract base class can be inherited by the root (parent) model
        in a model-inheritance tree.  It allows each model in the tree to
        "know" what type it is (via an automatically-set foreign key to
        ``ContentType``), allowing for automatic casting of a parent instance
        to its proper leaf (child) type.
        
        For instance, if you have a ``Place`` model with subclasses
        ``Restaurant`` and ``Bar``, you may want to query all Places::
        
        nearby_places = Place.objects.filter(location='here')
        
        But when you iterate over ``nearby_places``, you'll get only ``Place``
        instances back, even for objects that are "really" ``Restaurant`` or
        ``Bar``.  If you have ``Place`` inherit from ``InheritanceCastModel``,
        you can just call the ``cast()`` method on each ``Place`` and it will
        return an instance of the proper subtype, ``Restaurant`` or ``Bar``::
        
        from model_utils.models import InheritanceCastModel
        
        class Place(InheritanceCastModel):
        ...
        
        class Restaurant(Place):
        ...
        
        nearby_places = Place.objects.filter(location='here')
        for place in nearby_places:
        restaurant_or_bar = place.cast()
        ...
        
        .. note::
        This is inefficient for large querysets, as it results in n
        queries to the subtype tables.  It would be possible to write a
        QuerySet subclass that could reduce this to k queries, where there
        are k subtypes in the inheritance tree.
        
        models.TimeStampedModel
        =======================
        
        This abstract base class just provides self-updating ``created`` and
        ``modified`` fields on any model that inherits it.
        
        managers.QueryManager
        =====================
        
        Many custom model managers do nothing more than return a QuerySet that
        is filtered in some way. ``QueryManager`` allows you to express this
        pattern with a minimum of boilerplate::
        
        from django.db import models
        from model_utils.managers import QueryManager
        
        class Post(models.Model):
        ...
        published = models.BooleanField()
        pub_date = models.DateField()
        ...
        
        objects = models.Manager()
        public = QueryManager(published=True).order_by('-pub_date')
        
        The kwargs passed to ``QueryManager`` will be passed as-is to the
        ``QuerySet.filter()`` method. You can also pass a ``Q`` object to
        ``QueryManager`` to express more complex conditions. Note that you can
        set the ordering of the ``QuerySet`` returned by the ``QueryManager``
        by chaining a call to ``.order_by()`` on the ``QueryManager`` (this is
        not required).
        
Platform: UNKNOWN
Classifier: Development Status :: 3 - Alpha
Classifier: Environment :: Web Environment
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: BSD License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Framework :: Django
