From a4b11826a73e50e3d7d7dfa5d086e409be2b05dc Mon Sep 17 00:00:00 2001 From: Adrian Holovaty Date: Tue, 20 Jun 2006 04:47:07 +0000 Subject: [PATCH] Tightened up code in django.contrib.contenttypes.models.ContentTypeManager.get_for_model() to use get_or_create() git-svn-id: http://code.djangoproject.com/svn/django/trunk@3173 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- django/contrib/contenttypes/models.py | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/django/contrib/contenttypes/models.py b/django/contrib/contenttypes/models.py index 87316ae523..a95748a9a1 100644 --- a/django/contrib/contenttypes/models.py +++ b/django/contrib/contenttypes/models.py @@ -8,16 +8,11 @@ class ContentTypeManager(models.Manager): ContentType if necessary. """ opts = model._meta - try: - return self.model._default_manager.get(app_label=opts.app_label, - model=opts.object_name.lower()) - except self.model.DoesNotExist: - # The str() is needed around opts.verbose_name because it's a - # django.utils.functional.__proxy__ object. - ct = self.model(name=str(opts.verbose_name), - app_label=opts.app_label, model=opts.object_name.lower()) - ct.save() - return ct + # The str() is needed around opts.verbose_name because it's a + # django.utils.functional.__proxy__ object. + ct, created = self.model._default_manager.get_or_create(app_label=opts.app_label, + model=opts.object_name.lower(), defaults={'name': str(opts.verbose_name)}) + return ct class ContentType(models.Model): name = models.CharField(maxlength=100)