Django

Code

Changeset 3217

Show
Ignore:
Timestamp:
06/27/06 15:36:25 (2 years ago)
Author:
jacob
Message:

Added Manager.create() method to create and save an object in a single step.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • django/trunk/django/db/models/manager.py

    r3131 r3217  
    7070        return self.get_query_set().get(*args, **kwargs) 
    7171 
    72     def get_or_create(self, *args, **kwargs): 
    73         return self.get_query_set().get_or_create(*args, **kwargs) 
     72    def get_or_create(self, **kwargs): 
     73        return self.get_query_set().get_or_create(**kwargs) 
     74         
     75    def create(self, **kwargs): 
     76        return self.get_query_set().create(**kwargs) 
    7477 
    7578    def filter(self, *args, **kwargs): 
  • django/trunk/django/db/models/query.py

    r3113 r3217  
    205205        assert len(obj_list) == 1, "get() returned more than one %s -- it returned %s! Lookup parameters were %s" % (self.model._meta.object_name, len(obj_list), kwargs) 
    206206        return obj_list[0] 
     207         
     208    def create(self, **kwargs): 
     209        """ 
     210        Create a new object with the given kwargs, saving it to the database 
     211        and returning the created object. 
     212        """ 
     213        obj = self.model(**kwargs) 
     214        obj.save() 
     215        return obj 
    207216 
    208217    def get_or_create(self, **kwargs): 
  • django/trunk/docs/db-api.txt

    r3141 r3217  
    6060 
    6161The ``save()`` method has no return value. 
     62 
     63To create an object and save it all in one step see the `create`__ method. 
     64 
     65__ `create(**kwargs)`_ 
    6266 
    6367Auto-incrementing primary keys 
     
    706710        print "Either the entry or blog doesn't exist." 
    707711 
     712``create(**kwargs)`` 
     713~~~~~~~~~~~~~~~~~~~~ 
     714 
     715A convenience method for creating an object and saving it all in one step.  Thus:: 
     716 
     717    p = Person.objects.create(first_name="Bruce", last_name="Springsteen") 
     718     
     719and:: 
     720 
     721    p = Person(first_name="Bruce", last_name="Springsteen") 
     722    p.save() 
     723     
     724are equivalent. 
     725 
    708726``get_or_create(**kwargs)`` 
    709727~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
  • django/trunk/tests/modeltests/basic/models.py

    r3075 r3217  
    348348>>> a101.headline 
    349349'Article 101' 
    350 """ 
     350 
     351# You can create saved objects in a single step 
     352>>> a10 = Article.objects.create(headline="Article 10", pub_date=datetime(2005, 7, 31, 12, 30, 45)) 
     353>>> Article.objects.get(headline="Article 10") 
     354<Article: Article 10> 
     355"""