|
15 | 15 | import copy
|
16 | 16 | import inspect
|
17 | 17 | import traceback
|
18 |
| -from collections import OrderedDict, defaultdict |
| 18 | +from collections import defaultdict |
19 | 19 | from collections.abc import Mapping
|
20 | 20 |
|
21 | 21 | from django.core.exceptions import FieldDoesNotExist, ImproperlyConfigured
|
@@ -308,7 +308,7 @@ def visit(name):
|
308 | 308 | for name, f in base._declared_fields.items() if name not in known
|
309 | 309 | ]
|
310 | 310 |
|
311 |
| - return OrderedDict(base_fields + fields) |
| 311 | + return dict(base_fields + fields) |
312 | 312 |
|
313 | 313 | def __new__(cls, name, bases, attrs):
|
314 | 314 | attrs['_declared_fields'] = cls._get_declared_fields(bases, attrs)
|
@@ -393,20 +393,20 @@ def get_initial(self):
|
393 | 393 | if hasattr(self, 'initial_data'):
|
394 | 394 | # initial_data may not be a valid type
|
395 | 395 | if not isinstance(self.initial_data, Mapping):
|
396 |
| - return OrderedDict() |
| 396 | + return {} |
397 | 397 |
|
398 |
| - return OrderedDict([ |
399 |
| - (field_name, field.get_value(self.initial_data)) |
| 398 | + return { |
| 399 | + field_name: field.get_value(self.initial_data) |
400 | 400 | for field_name, field in self.fields.items()
|
401 | 401 | if (field.get_value(self.initial_data) is not empty) and
|
402 | 402 | not field.read_only
|
403 |
| - ]) |
| 403 | + } |
404 | 404 |
|
405 |
| - return OrderedDict([ |
406 |
| - (field.field_name, field.get_initial()) |
| 405 | + return { |
| 406 | + field.field_name: field.get_initial() |
407 | 407 | for field in self.fields.values()
|
408 | 408 | if not field.read_only
|
409 |
| - ]) |
| 409 | + } |
410 | 410 |
|
411 | 411 | def get_value(self, dictionary):
|
412 | 412 | # We override the default field access in order to support
|
@@ -441,7 +441,7 @@ def _read_only_defaults(self):
|
441 | 441 | if (field.read_only) and (field.default != empty) and (field.source != '*') and ('.' not in field.source)
|
442 | 442 | ]
|
443 | 443 |
|
444 |
| - defaults = OrderedDict() |
| 444 | + defaults = {} |
445 | 445 | for field in fields:
|
446 | 446 | try:
|
447 | 447 | default = field.get_default()
|
@@ -474,8 +474,8 @@ def to_internal_value(self, data):
|
474 | 474 | api_settings.NON_FIELD_ERRORS_KEY: [message]
|
475 | 475 | }, code='invalid')
|
476 | 476 |
|
477 |
| - ret = OrderedDict() |
478 |
| - errors = OrderedDict() |
| 477 | + ret = {} |
| 478 | + errors = {} |
479 | 479 | fields = self._writable_fields
|
480 | 480 |
|
481 | 481 | for field in fields:
|
@@ -503,7 +503,7 @@ def to_representation(self, instance):
|
503 | 503 | """
|
504 | 504 | Object instance -> Dict of primitive datatypes.
|
505 | 505 | """
|
506 |
| - ret = OrderedDict() |
| 506 | + ret = {} |
507 | 507 | fields = self._readable_fields
|
508 | 508 |
|
509 | 509 | for field in fields:
|
@@ -1061,7 +1061,7 @@ def get_fields(self):
|
1061 | 1061 | )
|
1062 | 1062 |
|
1063 | 1063 | # Determine the fields that should be included on the serializer.
|
1064 |
| - fields = OrderedDict() |
| 1064 | + fields = {} |
1065 | 1065 |
|
1066 | 1066 | for field_name in field_names:
|
1067 | 1067 | # If the field is explicitly declared on the class then use that.
|
@@ -1546,16 +1546,16 @@ def get_unique_together_validators(self):
|
1546 | 1546 | # which may map onto a model field. Any dotted field name lookups
|
1547 | 1547 | # cannot map to a field, and must be a traversal, so we're not
|
1548 | 1548 | # including those.
|
1549 |
| - field_sources = OrderedDict( |
1550 |
| - (field.field_name, field.source) for field in self._writable_fields |
| 1549 | + field_sources = { |
| 1550 | + field.field_name: field.source for field in self._writable_fields |
1551 | 1551 | if (field.source != '*') and ('.' not in field.source)
|
1552 |
| - ) |
| 1552 | + } |
1553 | 1553 |
|
1554 | 1554 | # Special Case: Add read_only fields with defaults.
|
1555 |
| - field_sources.update(OrderedDict( |
1556 |
| - (field.field_name, field.source) for field in self.fields.values() |
| 1555 | + field_sources.update({ |
| 1556 | + field.field_name: field.source for field in self.fields.values() |
1557 | 1557 | if (field.read_only) and (field.default != empty) and (field.source != '*') and ('.' not in field.source)
|
1558 |
| - )) |
| 1558 | + }) |
1559 | 1559 |
|
1560 | 1560 | # Invert so we can find the serializer field names that correspond to
|
1561 | 1561 | # the model field names in the unique_together sets. This also allows
|
|
0 commit comments