Просмотр исходного кода

Fixes #9425: Fix bulk import for object and multi-object custom fields

jeremystretch 3 лет назад
Родитель
Сommit
998a392bd3

+ 1 - 0
docs/release-notes/version-3.2.md

@@ -18,6 +18,7 @@
 * [#9358](https://github.com/netbox-community/netbox/issues/9358) - Annotate circuit count for providers list under ASN view
 * [#9387](https://github.com/netbox-community/netbox/issues/9387) - Ensure ActionsColumn `extra_buttons` are always displayed
 * [#9420](https://github.com/netbox-community/netbox/issues/9420) - Fix custom script class inheritance
+* [#9425](https://github.com/netbox-community/netbox/issues/9425) - Fix bulk import for object and multi-object custom fields
 * [#9430](https://github.com/netbox-community/netbox/issues/9430) - Fix passing of initial form data for DynamicModelChoiceFields
 
 

+ 9 - 2
netbox/extras/forms/bulk_import.py

@@ -27,6 +27,12 @@ class CustomFieldCSVForm(CSVModelForm):
         choices=CustomFieldTypeChoices,
         help_text='Field data type (e.g. text, integer, etc.)'
     )
+    object_type = CSVContentTypeField(
+        queryset=ContentType.objects.all(),
+        limit_choices_to=FeatureQuery('custom_fields'),
+        required=False,
+        help_text="Object type (for object or multi-object fields)"
+    )
     choices = SimpleArrayField(
         base_field=forms.CharField(),
         required=False,
@@ -36,8 +42,9 @@ class CustomFieldCSVForm(CSVModelForm):
     class Meta:
         model = CustomField
         fields = (
-            'name', 'label', 'type', 'content_types', 'required', 'description', 'weight', 'filter_logic', 'default',
-            'choices', 'weight', 'validation_minimum', 'validation_maximum', 'validation_regex',
+            'name', 'label', 'type', 'content_types', 'object_type', 'required', 'description', 'weight',
+            'filter_logic', 'default', 'choices', 'weight', 'validation_minimum', 'validation_maximum',
+            'validation_regex',
         )
 
 

+ 5 - 4
netbox/extras/tests/test_views.py

@@ -39,10 +39,11 @@ class CustomFieldTestCase(ViewTestCases.PrimaryObjectViewTestCase):
         }
 
         cls.csv_data = (
-            'name,label,type,content_types,weight,filter_logic,choices,validation_minimum,validation_maximum,validation_regex',
-            'field4,Field 4,text,dcim.site,100,exact,,,,[a-z]{3}',
-            'field5,Field 5,integer,dcim.site,100,exact,,1,100,',
-            'field6,Field 6,select,dcim.site,100,exact,"A,B,C",,,',
+            'name,label,type,content_types,object_type,weight,filter_logic,choices,validation_minimum,validation_maximum,validation_regex',
+            'field4,Field 4,text,dcim.site,,100,exact,,,,[a-z]{3}',
+            'field5,Field 5,integer,dcim.site,,100,exact,,1,100,',
+            'field6,Field 6,select,dcim.site,,100,exact,"A,B,C",,,',
+            'field7,Field 7,object,dcim.site,dcim.region,100,exact,,,,',
         )
 
         cls.bulk_edit_data = {