Add unicode_options parameter to DictType to allow for customizing key processing to a unicode string

This commit is contained in:
Steven Cummings 2013-12-27 10:55:38 -06:00
parent f21f009fd1
commit e802d75efe

View File

@ -39,14 +39,15 @@ class DictField(WritableField):
can be another field type (e.g., CharField) or a serializer. can be another field type (e.g., CharField) or a serializer.
""" """
def __init__(self, value_field=None, *args, **kwargs): def __init__(self, value_field=None, unicode_options=None, *args, **kwargs):
super(DictField, self).__init__(*args, **kwargs) super(DictField, self).__init__(*args, **kwargs)
self.value_field = value_field self.value_field = value_field
self.unicode_options = unicode_options or {}
def to_native(self, obj): def to_native(self, obj):
if self.value_field and obj: if self.value_field and obj:
return dict( return dict(
(unicode(key), self.value_field.to_native(value)) (unicode(key, **self.unicode_options), self.value_field.to_native(value))
for key, value in obj.items() for key, value in obj.items()
) )
return obj return obj
@ -54,7 +55,7 @@ class DictField(WritableField):
def from_native(self, data): def from_native(self, data):
if self.value_field and data: if self.value_field and data:
return dict( return dict(
(unicode(key), self.value_field.from_native(value)) (unicode(key, **self.unicode_options), self.value_field.from_native(value))
for key, value in data.items() for key, value in data.items()
) )
return data return data