From 009d6c1c52d51d62670c2de2f6f20743f6e59c78 Mon Sep 17 00:00:00 2001 From: Vasyl Stanislavchuk Date: Tue, 31 Dec 2013 10:54:12 +0200 Subject: [PATCH 1/2] Fixed prep/to_python values of model field. --- multiselectfield/db/fields.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/multiselectfield/db/fields.py b/multiselectfield/db/fields.py index 3a94430..6c4453e 100644 --- a/multiselectfield/db/fields.py +++ b/multiselectfield/db/fields.py @@ -98,12 +98,11 @@ class MultiSelectField(models.CharField): return MultiSelectFormField(**defaults) def get_prep_value(self, value): - return ",".join(value) + return '' if value is None else ",".join(value) def to_python(self, value): - if value is not None: + if value: return value if isinstance(value, list) else value.split(',') - return '' def contribute_to_class(self, cls, name): super(MultiSelectField, self).contribute_to_class(cls, name) From cbfe2ee9bd48c59414dd4fb2f452ebd7b94b9a39 Mon Sep 17 00:00:00 2001 From: Vasyl Stanislavchuk Date: Mon, 21 Jul 2014 14:52:30 +0300 Subject: [PATCH 2/2] Fixed get_field_display method for None value. --- multiselectfield/db/fields.py | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/multiselectfield/db/fields.py b/multiselectfield/db/fields.py index 6c4453e..6367466 100644 --- a/multiselectfield/db/fields.py +++ b/multiselectfield/db/fields.py @@ -111,14 +111,15 @@ class MultiSelectField(models.CharField): fieldname = name choicedict = dict(self.choices) display = [] - for value in getattr(obj, fieldname): - item_display = choicedict.get(value, None) - if item_display is None: - try: - item_display = choicedict.get(int(value), value) - except (ValueError, TypeError): - item_display = value - display.append(string_type(item_display)) + if getattr(obj, fieldname): + for value in getattr(obj, fieldname): + item_display = choicedict.get(value, None) + if item_display is None: + try: + item_display = choicedict.get(int(value), value) + except (ValueError, TypeError): + item_display = value + display.append(string_type(item_display)) return ", ".join(display) setattr(cls, 'get_%s_display' % self.name, get_display)