Coverage for extras/fields.py: 100%
13 statements
« prev ^ index » next coverage.py v7.15.2, created at 2026-10-10 18:35 +0000
« prev ^ index » next coverage.py v7.15.2, created at 2026-10-10 18:35 +0000
1from django.contrib.postgres.fields import ArrayField
2from django.db.models import CharField, TextField
4__all__ = (
5 'CachedValueField',
6 'ChoiceSetField',
7)
10class CachedValueField(TextField):
11 """
12 Currently a dummy field to prevent custom lookups being applied globally to TextField.
13 """
14 pass
17class ChoiceSetField(ArrayField):
18 """
19 An ArrayField of two-element [value, label] string pairs representing custom field choices.
20 """
21 def __init__(self, **kwargs):
22 kwargs['base_field'] = ArrayField(base_field=CharField(max_length=100), size=2)
23 super().__init__(**kwargs)
25 def deconstruct(self):
26 name, path, args, kwargs = super().deconstruct()
27 # base_field is fixed by __init__ and omitted from migrations
28 del kwargs['base_field']
29 return name, path, args, kwargs