@@ -69,6 +69,7 @@ async def select_custom_fields(
6969 orders : Optional [List [str ]] = None ,
7070 offset : Optional [int ] = None ,
7171 limit : Optional [int ] = None ,
72+ convert_fields : Optional [List [str ]] = None ,
7273 conn : Optional [BaseDBAsyncClient ] = None ,
7374 ):
7475 sql = SQLizer .select_custom_fields (
@@ -84,7 +85,11 @@ async def select_custom_fields(
8485 cls .model ,
8586 )
8687 conn = conn or cls .ro_conn
87- return await CursorHandler .fetch_dicts (sql , conn , logger )
88+ converters = {
89+ f : cls .model ._meta .fields_map [f ].to_python_value
90+ for f in convert_fields if f in cls .model ._meta .db_fields
91+ } if convert_fields else None
92+ return await CursorHandler .fetch_dicts (sql , conn , logger , converters )
8893
8994 @classmethod
9095 async def select_one_record (
@@ -95,6 +100,7 @@ async def select_one_record(
95100 groups : Optional [List [str ]] = None ,
96101 having : Optional [str ] = None ,
97102 orders : Optional [List [str ]] = None ,
103+ convert_fields : Optional [List [str ]] = None ,
98104 conn : Optional [BaseDBAsyncClient ] = None ,
99105 ):
100106 sql = SQLizer .select_custom_fields (
@@ -110,7 +116,11 @@ async def select_one_record(
110116 cls .model ,
111117 )
112118 conn = conn or cls .ro_conn
113- return await CursorHandler .fetch_one (sql , conn , logger )
119+ converters = {
120+ f : cls .model ._meta .fields_map [f ].to_python_value
121+ for f in convert_fields if f in cls .model ._meta .db_fields
122+ } if convert_fields else None
123+ return await CursorHandler .fetch_one (sql , conn , logger , converters )
114124
115125 @classmethod
116126 async def update_json_field (
0 commit comments