From 29b005e405fb55c2023f3a12aaa7aea31ae92975 Mon Sep 17 00:00:00 2001 From: wxg0103 <727495428@qq.com> Date: Mon, 29 Jul 2024 15:15:41 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E5=88=A0=E9=99=A4?= =?UTF-8?q?=E7=9F=A5=E8=AF=86=E5=BA=93=E4=BD=BF=E7=94=A8=E7=9A=84=E5=90=91?= =?UTF-8?q?=E9=87=8F=E6=A8=A1=E5=9E=8B=E6=8A=A5=E9=94=99=E7=9A=84=E7=BC=BA?= =?UTF-8?q?=E9=99=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../serializers/provider_serializers.py | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/apps/setting/serializers/provider_serializers.py b/apps/setting/serializers/provider_serializers.py index 7e46b8a09..ef2cea6fa 100644 --- a/apps/setting/serializers/provider_serializers.py +++ b/apps/setting/serializers/provider_serializers.py @@ -22,6 +22,7 @@ from common.config.embedding_config import ModelManage from common.exception.app_exception import AppApiException from common.util.field_message import ErrMessage from common.util.rsa_util import rsa_long_decrypt, rsa_long_encrypt +from dataset.models import DataSet from setting.models.model_management import Model, Status from setting.models_provider.base_model_provider import ValidCode, DownModelChunkStatus from setting.models_provider.constants.model_provider_constants import ModelProvideConstants @@ -236,10 +237,20 @@ class ModelSerializer(serializers.Serializer): def delete(self, with_valid=True): if with_valid: self.is_valid(raise_exception=True) - application_list = QuerySet(Application).filter(model_id=self.data.get('id')).all() - if len(application_list) > 0: - raise AppApiException(500, f"该模型关联了{len(application_list)} 个应用,无法删除该模型。") - QuerySet(Model).filter(id=self.data.get('id')).delete() + model_id = self.data.get('id') + model = Model.objects.filter(id=model_id).first() + if not model: + # 模型不存在,直接返回或抛出异常 + raise AppApiException(500, "模型不存在") + if model.model_type == 'LLM': + application_count = Application.objects.filter(model_id=model_id).count() + if application_count > 0: + raise AppApiException(500, f"该模型关联了{application_count} 个应用,无法删除该模型。") + elif model.model_type == 'EMBEDDING': + dataset_count = DataSet.objects.filter(embedding_mode_id=model_id).count() + if dataset_count > 0: + raise AppApiException(500, f"该模型关联了{dataset_count} 个知识库,无法删除该模型。") + model.delete() return True def pause_download(self, with_valid=True):