diff --git a/backend/dvadmin/utils/filters.py b/backend/dvadmin/utils/filters.py index f61fc62ed214d878693ee6f936b07209e331b101..cda9c2e694670e5d5ebfd6fc79397facbf434199 100644 --- a/backend/dvadmin/utils/filters.py +++ b/backend/dvadmin/utils/filters.py @@ -336,6 +336,7 @@ class CustomDjangoFilterBackend(DjangoFilterBackend): filters = OrderedDict() fields = cls.get_fields() undefined = [] + not_auto_lookup_fields = getattr(view, "not_auto_lookup_fields", []) for field_name, lookups in fields.items(): field = get_model_field(cls._meta.model, field_name) @@ -353,6 +354,8 @@ class CustomDjangoFilterBackend(DjangoFilterBackend): isinstance(field, (models.CharField)) and filterset_fields == "__all__" and lookups == ["exact"] + and field.name not in not_auto_lookup_fields + ): lookups = ["icontains"] for lookup_expr in lookups: diff --git a/backend/dvadmin/utils/viewset.py b/backend/dvadmin/utils/viewset.py index 42948b1afb7a80fbe6fd1e8175a6345157365598..18960d1a68375e36afe5d988842d3b880dc0f61b 100644 --- a/backend/dvadmin/utils/viewset.py +++ b/backend/dvadmin/utils/viewset.py @@ -34,6 +34,7 @@ class CustomModelViewSet(ModelViewSet, ImportSerializerMixin, ExportSerializerMi (3)filter_fields = '__all__' 默认支持全部model中的字段查询(除json字段外) (4)import_field_dict={} 导入时的字段字典 {model值: model的label} (5)export_field_label = [] 导出时的字段 + (6)not_auto_lookup_fields = [] 不进行自动创建lookup的字段 """ values_queryset = None ordering_fields = '__all__' @@ -45,6 +46,7 @@ class CustomModelViewSet(ModelViewSet, ImportSerializerMixin, ExportSerializerMi permission_classes = [CustomPermission] import_field_dict = {} export_field_label = {} + not_auto_lookup_fields = [] def filter_queryset(self, queryset): for backend in set(set(self.filter_backends) | set(self.extra_filter_class or [])):