1
0
mirror of https://github.com/netbox-community/netbox.git synced 2024-05-10 07:54:54 +00:00

Fixes #13410: Fix rendering of custom choice fields with large numner of choices

This commit is contained in:
Jeremy Stretch
2023-08-08 09:32:56 -04:00
parent 36072f17a9
commit f255fe507d
3 changed files with 21 additions and 12 deletions

View File

@ -80,7 +80,7 @@ class CustomFieldChoiceSetViewSet(NetBoxModelViewSet):
# Paginate data
if page := self.paginate_queryset(choices):
data = [
{'value': c[0], 'label': c[1]} for c in page
{'id': c[0], 'display': c[1]} for c in page
]
return self.get_paginated_response(data)

View File

@ -441,18 +441,25 @@ class CustomField(CloningMixin, ExportTemplatesMixin, ChangeLoggedModel):
if set_initial and default_choice:
initial = default_choice
if self.type == CustomFieldTypeChoices.TYPE_SELECT:
field_class = CSVChoiceField if for_csv_import else DynamicChoiceField
widget_class = APISelect
if for_csv_import:
if self.type == CustomFieldTypeChoices.TYPE_SELECT:
field_class = CSVChoiceField
else:
field_class = CSVMultipleChoiceField
field = field_class(choices=choices, required=required, initial=initial)
else:
field_class = CSVMultipleChoiceField if for_csv_import else DynamicMultipleChoiceField
widget_class = APISelectMultiple
field = field_class(
choices=choices,
required=required,
initial=initial,
widget=widget_class(api_url=f'/api/extras/custom-field-choice-sets/{self.choice_set.pk}/choices/')
)
if self.type == CustomFieldTypeChoices.TYPE_SELECT:
field_class = DynamicChoiceField
widget_class = APISelect
else:
field_class = DynamicMultipleChoiceField
widget_class = APISelectMultiple
field = field_class(
choices=choices,
required=required,
initial=initial,
widget=widget_class(api_url=f'/api/extras/custom-field-choice-sets/{self.choice_set.pk}/choices/')
)
# URL
elif self.type == CustomFieldTypeChoices.TYPE_URL:

View File

@ -29,6 +29,8 @@ class DynamicChoiceField(forms.ChoiceField):
self.choices = [
choice for choice in self.choices if choice[0] == data
]
else:
self.choices = []
return bound_field