summaryrefslogtreecommitdiff
path: root/django/db
diff options
context:
space:
mode:
authorAndrei Antoukh <niwi@niwi.be>2012-07-05 16:39:19 +0300
committerAnssi Kääriäinen <akaariai@gmail.com>2012-07-05 16:43:28 +0300
commit0f49b2bce2d5b3c5891c8a329bab7dffe16fc79b (patch)
treed7ef224390b349f5d8432673ba5ec2f4e225a0a6 /django/db
parente4a1407a9cf35e6449136c22647a58cb14451e7a (diff)
Fixed #18362 - Made model.save() update_fields accept attnames
Diffstat (limited to 'django/db')
-rw-r--r--django/db/models/base.py13
1 files changed, 10 insertions, 3 deletions
diff --git a/django/db/models/base.py b/django/db/models/base.py
index b2d92a2aee..82283d591c 100644
--- a/django/db/models/base.py
+++ b/django/db/models/base.py
@@ -468,8 +468,15 @@ class Model(object):
return
update_fields = frozenset(update_fields)
- field_names = set([field.name for field in self._meta.fields
- if not field.primary_key])
+ field_names = set()
+
+ for field in self._meta.fields:
+ if not field.primary_key:
+ field_names.add(field.name)
+
+ if field.name != field.attname:
+ field_names.add(field.attname)
+
non_model_fields = update_fields.difference(field_names)
if non_model_fields:
@@ -534,7 +541,7 @@ class Model(object):
non_pks = [f for f in meta.local_fields if not f.primary_key]
if update_fields:
- non_pks = [f for f in non_pks if f.name in update_fields]
+ non_pks = [f for f in non_pks if f.name in update_fields or f.attname in update_fields]
# First, try an UPDATE. If that doesn't update anything, do an INSERT.
pk_val = self._get_pk_val(meta)