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:
@ -80,7 +80,7 @@ class CustomFieldChoiceSetViewSet(NetBoxModelViewSet):
|
|||||||
# Paginate data
|
# Paginate data
|
||||||
if page := self.paginate_queryset(choices):
|
if page := self.paginate_queryset(choices):
|
||||||
data = [
|
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)
|
return self.get_paginated_response(data)
|
||||||
|
|
||||||
|
@ -441,18 +441,25 @@ class CustomField(CloningMixin, ExportTemplatesMixin, ChangeLoggedModel):
|
|||||||
if set_initial and default_choice:
|
if set_initial and default_choice:
|
||||||
initial = default_choice
|
initial = default_choice
|
||||||
|
|
||||||
if self.type == CustomFieldTypeChoices.TYPE_SELECT:
|
if for_csv_import:
|
||||||
field_class = CSVChoiceField if for_csv_import else DynamicChoiceField
|
if self.type == CustomFieldTypeChoices.TYPE_SELECT:
|
||||||
widget_class = APISelect
|
field_class = CSVChoiceField
|
||||||
|
else:
|
||||||
|
field_class = CSVMultipleChoiceField
|
||||||
|
field = field_class(choices=choices, required=required, initial=initial)
|
||||||
else:
|
else:
|
||||||
field_class = CSVMultipleChoiceField if for_csv_import else DynamicMultipleChoiceField
|
if self.type == CustomFieldTypeChoices.TYPE_SELECT:
|
||||||
widget_class = APISelectMultiple
|
field_class = DynamicChoiceField
|
||||||
field = field_class(
|
widget_class = APISelect
|
||||||
choices=choices,
|
else:
|
||||||
required=required,
|
field_class = DynamicMultipleChoiceField
|
||||||
initial=initial,
|
widget_class = APISelectMultiple
|
||||||
widget=widget_class(api_url=f'/api/extras/custom-field-choice-sets/{self.choice_set.pk}/choices/')
|
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
|
# URL
|
||||||
elif self.type == CustomFieldTypeChoices.TYPE_URL:
|
elif self.type == CustomFieldTypeChoices.TYPE_URL:
|
||||||
|
@ -29,6 +29,8 @@ class DynamicChoiceField(forms.ChoiceField):
|
|||||||
self.choices = [
|
self.choices = [
|
||||||
choice for choice in self.choices if choice[0] == data
|
choice for choice in self.choices if choice[0] == data
|
||||||
]
|
]
|
||||||
|
else:
|
||||||
|
self.choices = []
|
||||||
|
|
||||||
return bound_field
|
return bound_field
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user