Add filter_fields to extras.ObjectVar & fix default value handling

This commit is contained in:
thatmattlove 2021-08-26 00:27:22 -07:00
parent e8b3d191e6
commit 52a1f9ddf0
2 changed files with 5 additions and 2 deletions

View File

@ -181,16 +181,19 @@ class ObjectVar(ScriptVariable):
:param model: The NetBox model being referenced :param model: The NetBox model being referenced
:param query_params: A dictionary of additional query parameters to attach when making REST API requests (optional) :param query_params: A dictionary of additional query parameters to attach when making REST API requests (optional)
:param filter_fields: A dictionary or list of dictionaries that define a related
field. Example: `{'accessor': 'group_id', 'field_name': 'tenant_group'}` (optional)
:param null_option: The label to use as a "null" selection option (optional) :param null_option: The label to use as a "null" selection option (optional)
""" """
form_field = DynamicModelChoiceField form_field = DynamicModelChoiceField
def __init__(self, model, query_params=None, null_option=None, *args, **kwargs): def __init__(self, model, query_params=None, filter_fields=None, null_option=None, *args, **kwargs):
super().__init__(*args, **kwargs) super().__init__(*args, **kwargs)
self.field_attrs.update({ self.field_attrs.update({
'queryset': model.objects.all(), 'queryset': model.objects.all(),
'query_params': query_params, 'query_params': query_params,
'filter_fields': filter_fields,
'null_option': null_option, 'null_option': null_option,
}) })

View File

@ -416,7 +416,7 @@ class DynamicModelChoiceMixin:
widget.add_query_param(key, value) widget.add_query_param(key, value)
# Attach any dynamic query parameters # Attach any dynamic query parameters
if len(self.filter_fields) > 0: if self.filter_fields is not None and len(self.filter_fields) > 0:
widget.add_filter_fields(self.filter_fields) widget.add_filter_fields(self.filter_fields)
return attrs return attrs