Coverage for extras/fields.py: 100%

13 statements  

« 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 

3 

4__all__ = ( 

5 'CachedValueField', 

6 'ChoiceSetField', 

7) 

8 

9 

10class CachedValueField(TextField): 

11 """ 

12 Currently a dummy field to prevent custom lookups being applied globally to TextField. 

13 """ 

14 pass 

15 

16 

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) 

24 

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