diff --git a/backend/dvadmin/utils/filters.py b/backend/dvadmin/utils/filters.py index da808ace31b75cf11e7259e2e2f4c24543bab036..569dddc8bed410de2dff7c1eb79fb35fd603e009 100644 --- a/backend/dvadmin/utils/filters.py +++ b/backend/dvadmin/utils/filters.py @@ -283,6 +283,8 @@ class CustomDjangoFilterBackend(DjangoFilterBackend): if (f.name == "id") or not isinstance(f, models.AutoField) and not (getattr(f.remote_field, "parent_link", False)) + and f.name not in (getattr(view, "not_auto_lookup_fields", [])) + ] @classmethod diff --git a/backend/dvadmin/utils/viewset.py b/backend/dvadmin/utils/viewset.py index b85007a0a03c36a68571f37a1c964f4f03a77e2d..90d0be555c97735561ecd1d0a40700e030d273fb 100644 --- a/backend/dvadmin/utils/viewset.py +++ b/backend/dvadmin/utils/viewset.py @@ -32,6 +32,8 @@ 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__' @@ -43,6 +45,8 @@ 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 [])):