Jeremy Stretch 1 год назад
Родитель
Сommit
0a0dae3d35
1 измененных файлов с 12 добавлено и 4 удалено
  1. 12 4
      netbox/utilities/testing/filtersets.py

+ 12 - 4
netbox/utilities/testing/filtersets.py

@@ -80,6 +80,10 @@ class BaseFilterSetTests:
             if model_field.name in chain(self.ignore_fields, IGNORE_FIELDS):
                 continue
 
+            # Skip reverse ForeignKey relationships
+            if type(model_field) is ManyToOneRel:
+                continue
+
             # One-to-one & one-to-many relationships
             if issubclass(model_field.__class__, ForeignKey) or type(model_field) is OneToOneRel:
                 if model_field.related_model is ContentType:
@@ -90,10 +94,14 @@ class BaseFilterSetTests:
                     filter_name = model_field.name
                 else:
                     filter_name = f'{model_field.name}_id'
-                self.assertIn(filter_name, filterset_fields, f'No filter found for {model_field.name}!')
-
-            # TODO: Many-to-one & many-to-many relationships
-            elif type(model_field) in (ManyToOneRel, ManyToManyField, ManyToManyRel):
+                self.assertIn(filter_name, filterset_fields, f'No filter found for {filter_name}!')
+
+            # TODO: Many-to-many relationships
+            elif type(model_field) is ManyToManyField:
+                related_model = model_field.related_model._meta.model_name
+                filter_name = f'{related_model}_id'
+                self.assertIn(filter_name, filterset_fields, f'M2M: No filter found for {filter_name}!')
+            elif type(model_field) is ManyToManyRel:
                 continue
 
             # TODO: Generic relationships