Multi Choice Django Array Field
from django import forms | |
from django.contrib.postgres.fields import ArrayField | |
class ChoiceArrayField(ArrayField): | |
""" | |
A field that allows us to store an array of choices. | |
Uses Django 1.9's postgres ArrayField | |
and a MultipleChoiceField for its formfield. | |
Usage: | |
choices = ChoiceArrayField(models.CharField(max_length=..., | |
choices=(...,)), | |
default=[...]) | |
""" | |
def formfield(self, **kwargs): | |
defaults = { | |
'form_class': forms.MultipleChoiceField, | |
'choices': self.base_field.choices, | |
} | |
defaults.update(kwargs) | |
# Skip our parent's formfield implementation completely as we don't | |
# care for it. | |
# pylint:disable=bad-super-call | |
return super(ArrayField, self).formfield(**defaults) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment