|
|
@@ -4,7 +4,6 @@ from django.db.models import Count, ManyToOneRel, OuterRef, Subquery
|
|
|
from django.db.models.functions import Coalesce
|
|
|
from django.http import QueryDict
|
|
|
from django.utils import timezone
|
|
|
-from django.utils.datastructures import MultiValueDict
|
|
|
from django.utils.timezone import localtime
|
|
|
|
|
|
from .string import title
|
|
|
@@ -70,37 +69,6 @@ def dict_to_filter_params(d, prefix=''):
|
|
|
return params
|
|
|
|
|
|
|
|
|
-def dict_to_querydict(d, mutable=True):
|
|
|
- """
|
|
|
- Create a QueryDict instance from a regular Python dictionary.
|
|
|
- """
|
|
|
- qd = QueryDict(mutable=True)
|
|
|
- for k, v in d.items():
|
|
|
- item = MultiValueDict({k: v}) if isinstance(v, (list, tuple, set)) else {k: v}
|
|
|
- qd.update(item)
|
|
|
- if not mutable:
|
|
|
- qd._mutable = False
|
|
|
- return qd
|
|
|
-
|
|
|
-
|
|
|
-def normalize_querydict(querydict):
|
|
|
- """
|
|
|
- Convert a QueryDict to a normal, mutable dictionary, preserving list values. For example,
|
|
|
-
|
|
|
- QueryDict('foo=1&bar=2&bar=3&baz=')
|
|
|
-
|
|
|
- becomes:
|
|
|
-
|
|
|
- {'foo': '1', 'bar': ['2', '3'], 'baz': ''}
|
|
|
-
|
|
|
- This function is necessary because QueryDict does not provide any built-in mechanism which preserves multiple
|
|
|
- values.
|
|
|
- """
|
|
|
- return {
|
|
|
- k: v if len(v) > 1 else v[0] for k, v in querydict.lists()
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
def prepare_cloned_fields(instance):
|
|
|
"""
|
|
|
Generate a QueryDict comprising attributes from an object's clone() method.
|