Opened 10 years ago
Last modified 6 years ago
#24858 closed New feature
get_foo_display with the ArrayField — at Version 3
| Reported by: | Mounir | Owned by: | |
|---|---|---|---|
| Component: | contrib.postgres | Version: | dev |
| Severity: | Normal | Keywords: | |
| Cc: | chedi | Triage Stage: | Accepted |
| Has patch: | yes | Needs documentation: | no |
| Needs tests: | no | Patch needs improvement: | no |
| Easy pickings: | no | UI/UX: | no |
Description (last modified by )
I think using ArrayField as a many choices field would be awesome.
Passing choices to ArrayField works fine with MultipleChoiceField on the form.
But calling get_foo_display return a TypeError: unhashable type: 'list', maybe this method need to check if the field is an ArrayField it can return a string representation of the choices separated by comma.
class Example(models.Model): CHOICES = ( (1, 'value1'), (2, 'value2'), (3, 'value3'), ) multi_choices_array = ArrayField( base_field=models.IntegerField(), choices=CHOICES, ) # Adding this method will show the values def multi_choices_array_display(self): result = '' choices = dict(self.CHOICES) for index, value in enumerate(self.multi_choices_array): result += "{0}".format(choices[value]) if not index == len(self.multi_choices_array) - 1: result += ', ' return result example = Example.objects.create(multi_choices_array= [1, 2]) example.get_multi_choices_array_display() # Will raise a Type Error exception example.multi_choices_array_display() # Will print 'value1, value2'
Change History (3)
comment:1 by , 10 years ago
comment:2 by , 10 years ago
| Description: | modified (diff) |
|---|
comment:3 by , 10 years ago
| Description: | modified (diff) |
|---|
Note:
See TracTickets
for help on using tickets.
Could you please add a code snippet of the expected behavior?