diff options
| author | Andrei Antoukh <niwi@niwi.be> | 2012-07-05 16:39:19 +0300 |
|---|---|---|
| committer | Anssi Kääriäinen <akaariai@gmail.com> | 2012-07-05 16:43:28 +0300 |
| commit | 0f49b2bce2d5b3c5891c8a329bab7dffe16fc79b (patch) | |
| tree | d7ef224390b349f5d8432673ba5ec2f4e225a0a6 /django/db | |
| parent | e4a1407a9cf35e6449136c22647a58cb14451e7a (diff) | |
Fixed #18362 - Made model.save() update_fields accept attnames
Diffstat (limited to 'django/db')
| -rw-r--r-- | django/db/models/base.py | 13 |
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) |
