From e8c9650f197ee79e250c7c11d0c7cc92de1da809 Mon Sep 17 00:00:00 2001 From: Simon Litchfield Date: Wed, 14 May 2014 17:50:59 +1000 Subject: [PATCH 1/2] Added get_FIELD_list method to return choice labels as a list rather than a comma separated string --- multiselectfield/db/fields.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/multiselectfield/db/fields.py b/multiselectfield/db/fields.py index 3a94430..ba90fd9 100644 --- a/multiselectfield/db/fields.py +++ b/multiselectfield/db/fields.py @@ -108,7 +108,7 @@ class MultiSelectField(models.CharField): def contribute_to_class(self, cls, name): super(MultiSelectField, self).contribute_to_class(cls, name) if self.choices: - def get_display(obj): + def get_list(obj): fieldname = name choicedict = dict(self.choices) display = [] @@ -120,7 +120,10 @@ class MultiSelectField(models.CharField): except (ValueError, TypeError): item_display = value display.append(string_type(item_display)) - return ", ".join(display) + return display + def get_display(obj): + return ", ".join(get_list(obj)) + setattr(cls, 'get_%s_list' % self.name, get_list) setattr(cls, 'get_%s_display' % self.name, get_display) MultiSelectField = add_metaclass(models.SubfieldBase)(MultiSelectField) From c7daa84610faa81fa5a2882609f855ba7629b8b1 Mon Sep 17 00:00:00 2001 From: Simon Litchfield Date: Wed, 14 May 2014 18:03:55 +1000 Subject: [PATCH 2/2] Improved handling of empty values --- multiselectfield/db/fields.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/multiselectfield/db/fields.py b/multiselectfield/db/fields.py index ba90fd9..5dd4333 100644 --- a/multiselectfield/db/fields.py +++ b/multiselectfield/db/fields.py @@ -119,7 +119,9 @@ class MultiSelectField(models.CharField): item_display = choicedict.get(int(value), value) except (ValueError, TypeError): item_display = value - display.append(string_type(item_display)) + item_display = string_type(item_display) + if item_display not in ('', u'', None): + display.append(item_display) return display def get_display(obj): return ", ".join(get_list(obj))