1. Matt Austin
  2. django-model-utils


Carl Meyer  committed 7f88455 Merge

Merge pull request #5 from smacker/master

get_subclass method - thanks smacker!

  • Participants
  • Parent commits 9f282cc, 9a6b914
  • Branches default

Comments (0)

Files changed (4)

File .gitignore

View file
  • Ignore whitespace

File README.rst

View file
  • Ignore whitespace
     nearby_places = Place.objects.select_subclasses("restaurant")
     # restaurants will be Restaurant instances, bars will still be Place instances
+Also it provides syntax sugar for `get()` method::
+    place = Place.objects.get_subclass(id=some_id)
+    # "place" will automatically be an instance of Place, Restaurant, or Bar
 If you don't explicitly call ``select_subclasses()``, an ``InheritanceManager``
 behaves identically to a normal ``Manager``; so it's safe to use as your
 default manager for the model.

File model_utils/managers.py

View file
  • Ignore whitespace
     def select_subclasses(self, *subclasses):
         return self.get_query_set().select_subclasses(*subclasses)
+    def get_subclass(self, *args, **kwargs):
+        return self.get_query_set().select_subclasses().get(*args, **kwargs)
 class InheritanceCastMixin(object):
     def cast(self):

File model_utils/tests/tests.py

View file
  • Ignore whitespace
+        def test_get_subclass(self):
+            self.assertEquals(
+                self.get_manager().get_subclass(pk=self.child1.pk),
+                self.child1)
     class InheritanceManagerRelatedTests(InheritanceManagerTests):
         def setUp(self):