Coverage for utilities/forms/fields/content_types.py: 75%
16 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 import forms
3from utilities.object_types import object_type_name
5__all__ = (
6 'ContentTypeChoiceField',
7 'ContentTypeMultipleChoiceField',
8)
11class ContentTypeChoiceMixin:
13 def __init__(self, queryset, *args, **kwargs):
14 # Order ContentTypes by app_label
15 queryset = queryset.order_by('app_label', 'model')
16 super().__init__(queryset, *args, **kwargs)
18 def label_from_instance(self, obj):
19 try:
20 return object_type_name(obj)
21 except AttributeError:
22 return super().label_from_instance(obj)
25class ContentTypeChoiceField(ContentTypeChoiceMixin, forms.ModelChoiceField):
26 """
27 Selection field for a single content type.
28 """
29 pass
32class ContentTypeMultipleChoiceField(ContentTypeChoiceMixin, forms.ModelMultipleChoiceField):
33 """
34 Selection field for one or more content types.
35 """
36 pass