summaryrefslogtreecommitdiff
path: root/django/forms
diff options
context:
space:
mode:
Diffstat (limited to 'django/forms')
-rw-r--r--django/forms/models.py6
1 files changed, 4 insertions, 2 deletions
diff --git a/django/forms/models.py b/django/forms/models.py
index bfc0b35803..595b775f4f 100644
--- a/django/forms/models.py
+++ b/django/forms/models.py
@@ -149,7 +149,6 @@ def fields_for_model(model, fields=None, exclude=None, formfield_callback=lambda
fields will be excluded from the returned fields, even if they are listed
in the ``fields`` argument.
"""
- # TODO: if fields is provided, it would be nice to return fields in that order
field_list = []
opts = model._meta
for f in opts.fields + opts.many_to_many:
@@ -162,7 +161,10 @@ def fields_for_model(model, fields=None, exclude=None, formfield_callback=lambda
formfield = formfield_callback(f)
if formfield:
field_list.append((f.name, formfield))
- return SortedDict(field_list)
+ field_dict = SortedDict(field_list)
+ if fields:
+ field_dict = SortedDict([(f, field_dict[f]) for f in fields if (not exclude) or (exclude and f not in exclude)])
+ return field_dict
class ModelFormOptions(object):
def __init__(self, options=None):