From 0f49b2bce2d5b3c5891c8a329bab7dffe16fc79b Mon Sep 17 00:00:00 2001 From: Andrei Antoukh Date: Thu, 5 Jul 2012 16:39:19 +0300 Subject: Fixed #18362 - Made model.save() update_fields accept attnames --- django/db/models/base.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) (limited to 'django/db') 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) -- cgit v1.3