Skip to content

Instantly share code, notes, and snippets.

@viyatb
Last active December 31, 2015 01:28
Show Gist options
  • Save viyatb/7913813 to your computer and use it in GitHub Desktop.
Save viyatb/7913813 to your computer and use it in GitHub Desktop.
Use DictField() in Django admin [Django-nonrel]

Use DictField() in Django admin

Similar to

https://gist.github.com/jonashaag/1200165

https://gist.github.com/ielshareef/3011156

here is a solution to implement DictFields.

##in models.py

from .forms import StringListField, ObjectListField, DictionaryField
#To use DictFields in Django admin

class DictOverrideField(DictField):
    def formfield(self, **kwargs):
        return models.Field.formfield(self, DictionaryField, **kwargs)

##in forms.py class DictionaryField(forms.CharField): def generate_dictfield(self, field_name, field, **kwargs): defaults = { 'required': field.required, 'initial': field.default, 'label': self.get_field_label(field_name, field), 'help_text': self.get_field_help_text(field), }

        defaults.update(kwargs)
        return DictField(**defaults)
    
    def to_python(self, value):
        if isinstance(value, basestring):
            value = ast.literal_eval(value)
        if isinstance(value, dict):
            return value
        raise ValueError('"%s" could not be converted to a dict.' % value)

Share!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment