From 77a37da90f3d4c5cd19257bc8986aeda5eb14659 Mon Sep 17 00:00:00 2001 From: haolou Date: Fri, 7 Nov 2025 17:45:43 +0800 Subject: [PATCH] fix: fix a mongodb _id issue --- backend/models/base_doc.py | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/backend/models/base_doc.py b/backend/models/base_doc.py index af4aa81..328076b 100644 --- a/backend/models/base_doc.py +++ b/backend/models/base_doc.py @@ -284,11 +284,12 @@ class BaseDoc(BaseModel, metaclass=QueryModelMeta): doc_dict = self._convert_decimals_to_float(doc_dict) # Respect pre-populated id by mapping to MongoDB _id - if getattr(self, 'id', None): + id_value = getattr(self, 'id', None) + if id_value and not isinstance(id_value, QueryExpression): try: - doc_dict['_id'] = ObjectId(self.id) + doc_dict['_id'] = ObjectId(id_value) except Exception: - doc_dict['_id'] = self.id + doc_dict['_id'] = id_value result = await collection.insert_one(doc_dict) @@ -322,12 +323,13 @@ class BaseDoc(BaseModel, metaclass=QueryModelMeta): elif hasattr(self, 'auth_code'): query['auth_code'] = self.auth_code - if getattr(self, 'id', None): + id_value = getattr(self, 'id', None) + if id_value and not isinstance(id_value, QueryExpression): # Update by primary key when available try: - object_id = ObjectId(self.id) + object_id = ObjectId(id_value) except Exception: - object_id = self.id + object_id = id_value result = await collection.update_one({"_id": object_id}, {"$set": doc_dict}, upsert=True) if result.upserted_id: