# HG changeset patch # User Klaas van Schelven # Date 1295019289 -3600 # Node ID cf2ca886591242f0779d63b923e644fab062827b # Parent 3ca2d76121b7532ee490f5ce00ae91bc0c344cd8 Fix for #10967 diff -r 3ca2d76121b7 -r cf2ca8865912 django/db/models/base.py --- a/django/db/models/base.py Fri Jan 14 08:31:14 2011 +0000 +++ b/django/db/models/base.py Fri Jan 14 16:34:49 2011 +0100 @@ -522,7 +522,7 @@ if force_update or non_pks: values = [(f, None, (raw and getattr(self, f.attname) or f.pre_save(self, False))) for f in non_pks] rows = manager.using(using).filter(pk=pk_val)._update(values) - if force_update and not rows: + if force_update and values and not rows: raise DatabaseError("Forced update did not affect any rows.") else: record_exists = False diff -r 3ca2d76121b7 -r cf2ca8865912 tests/modeltests/force_insert_update/models.py --- a/tests/modeltests/force_insert_update/models.py Fri Jan 14 08:31:14 2011 +0000 +++ b/tests/modeltests/force_insert_update/models.py Fri Jan 14 16:34:49 2011 +0100 @@ -8,6 +8,9 @@ name = models.CharField(max_length = 10) value = models.IntegerField() +class Subclass(Counter): + pass + class WithCustomPK(models.Model): name = models.IntegerField(primary_key=True) value = models.IntegerField() diff -r 3ca2d76121b7 -r cf2ca8865912 tests/modeltests/force_insert_update/tests.py --- a/tests/modeltests/force_insert_update/tests.py Fri Jan 14 08:31:14 2011 +0000 +++ b/tests/modeltests/force_insert_update/tests.py Fri Jan 14 16:34:49 2011 +0100 @@ -1,7 +1,7 @@ from django.db import transaction, IntegrityError, DatabaseError from django.test import TestCase -from models import Counter, WithCustomPK +from models import Counter, WithCustomPK, Subclass class ForceTests(TestCase): @@ -36,3 +36,10 @@ # the data isn't in the database already. obj = WithCustomPK(name=1, value=1) self.assertRaises(DatabaseError, obj.save, force_update=True) + + subclass = Subclass(name="one", value=1) + subclass.save() + subclass.name = "updated" + subclass.save(force_update=True) + + self.fail()