mirror of
https://github.com/django/django.git
synced 2025-08-26 21:44:31 +00:00
Fixed #24858 -- Added support for get_FOO_display() to ArrayField and RangeFields.
_get_FIELD_display() crashed when Field.choices was unhashable.
This commit is contained in:
parent
8058d9d7ad
commit
153c7956f8
5 changed files with 84 additions and 1 deletions
|
@ -37,6 +37,53 @@ except ImportError:
|
|||
pass
|
||||
|
||||
|
||||
@isolate_apps('postgres_tests')
|
||||
class BasicTests(PostgreSQLSimpleTestCase):
|
||||
def test_get_field_display(self):
|
||||
class MyModel(PostgreSQLModel):
|
||||
field = ArrayField(
|
||||
models.CharField(max_length=16),
|
||||
choices=[
|
||||
['Media', [(['vinyl', 'cd'], 'Audio')]],
|
||||
(('mp3', 'mp4'), 'Digital'),
|
||||
],
|
||||
)
|
||||
|
||||
tests = (
|
||||
(['vinyl', 'cd'], 'Audio'),
|
||||
(('mp3', 'mp4'), 'Digital'),
|
||||
(('a', 'b'), "('a', 'b')"),
|
||||
(['c', 'd'], "['c', 'd']"),
|
||||
)
|
||||
for value, display in tests:
|
||||
with self.subTest(value=value, display=display):
|
||||
instance = MyModel(field=value)
|
||||
self.assertEqual(instance.get_field_display(), display)
|
||||
|
||||
def test_get_field_display_nested_array(self):
|
||||
class MyModel(PostgreSQLModel):
|
||||
field = ArrayField(
|
||||
ArrayField(models.CharField(max_length=16)),
|
||||
choices=[
|
||||
[
|
||||
'Media',
|
||||
[([['vinyl', 'cd'], ('x',)], 'Audio')],
|
||||
],
|
||||
((['mp3'], ('mp4',)), 'Digital'),
|
||||
],
|
||||
)
|
||||
tests = (
|
||||
([['vinyl', 'cd'], ('x',)], 'Audio'),
|
||||
((['mp3'], ('mp4',)), 'Digital'),
|
||||
((('a', 'b'), ('c',)), "(('a', 'b'), ('c',))"),
|
||||
([['a', 'b'], ['c']], "[['a', 'b'], ['c']]"),
|
||||
)
|
||||
for value, display in tests:
|
||||
with self.subTest(value=value, display=display):
|
||||
instance = MyModel(field=value)
|
||||
self.assertEqual(instance.get_field_display(), display)
|
||||
|
||||
|
||||
class TestSaveLoad(PostgreSQLTestCase):
|
||||
|
||||
def test_integer(self):
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue