From c763f261731dffb71498af507987f9e5a3c7904c Mon Sep 17 00:00:00 2001 From: Malcolm Tredinnick Date: Sat, 9 Aug 2008 17:19:44 +0000 Subject: [PATCH] Updated the tests. git-svn-id: http://code.djangoproject.com/svn/django/trunk@8268 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- tests/modeltests/model_inheritance/models.py | 1 + tests/modeltests/update/models.py | 8 ++++++-- tests/regressiontests/queries/models.py | 1 + 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/tests/modeltests/model_inheritance/models.py b/tests/modeltests/model_inheritance/models.py index 9842cb166b..26ec0be503 100644 --- a/tests/modeltests/model_inheritance/models.py +++ b/tests/modeltests/model_inheritance/models.py @@ -282,6 +282,7 @@ DoesNotExist: Restaurant matching query does not exist. # The update() command can update fields in parent and child classes at once # (although it executed multiple SQL queries to do so). >>> Restaurant.objects.filter(serves_hot_dogs=True, name__contains='D').update(name='Demon Puppies', serves_hot_dogs=False) +1 >>> r1 = Restaurant.objects.get(pk=r.pk) >>> r1.serves_hot_dogs == False True diff --git a/tests/modeltests/update/models.py b/tests/modeltests/update/models.py index 8a35b61a7c..0ffd029437 100644 --- a/tests/modeltests/update/models.py +++ b/tests/modeltests/update/models.py @@ -24,20 +24,21 @@ class RelatedPoint(models.Model): __test__ = {'API_TESTS': """ >>> DataPoint(name="d0", value="apple").save() >>> DataPoint(name="d2", value="banana").save() ->>> d3 = DataPoint(name="d3", value="banana") ->>> d3.save() +>>> d3 = DataPoint.objects.create(name="d3", value="banana") >>> RelatedPoint(name="r1", data=d3).save() Objects are updated by first filtering the candidates into a queryset and then calling the update() method. It executes immediately and returns nothing. >>> DataPoint.objects.filter(value="apple").update(name="d1") +1 >>> DataPoint.objects.filter(value="apple") [] We can update multiple objects at once. >>> DataPoint.objects.filter(value="banana").update(value="pineapple") +2 >>> DataPoint.objects.get(name="d2").value u'pineapple' @@ -46,12 +47,14 @@ referred to, not anything inside the related object. >>> d = DataPoint.objects.get(name="d1") >>> RelatedPoint.objects.filter(name="r1").update(data=d) +1 >>> RelatedPoint.objects.filter(data__name="d1") [] Multiple fields can be updated at once >>> DataPoint.objects.filter(value="pineapple").update(value="fruit", another_value="peaches") +2 >>> d = DataPoint.objects.get(name="d2") >>> d.value, d.another_value (u'fruit', u'peaches') @@ -60,6 +63,7 @@ In the rare case you want to update every instance of a model, update() is also a manager method. >>> DataPoint.objects.update(value='thing') +3 >>> DataPoint.objects.values('value').distinct() [{'value': u'thing'}] diff --git a/tests/regressiontests/queries/models.py b/tests/regressiontests/queries/models.py index 3a4acf350a..bbd3ef7407 100644 --- a/tests/regressiontests/queries/models.py +++ b/tests/regressiontests/queries/models.py @@ -767,6 +767,7 @@ Updates that are filtered on the model being updated are somewhat tricky to get in MySQL. This exercises that case. >>> mm = ManagedModel.objects.create(data='mm1', tag=t1, public=True) >>> ManagedModel.objects.update(data='mm') +1 A values() or values_list() query across joined models must use outer joins appropriately.