@@ -427,10 +427,12 @@ async def create_questions(request, collection_id):
427427 if collection is None :
428428 return fail (HTTPStatus .NOT_FOUND , "Collection not found" )
429429 documents = await sync_to_async (collection .document_set .exclude )(status = DocumentStatus .DELETED )
430- collection .need_generate = len (documents )
431- await collection .asave ()
432430 async for document in documents :
433431 generate_questions .delay (document .id )
432+
433+ documents = await sync_to_async (list )(documents )
434+ collection .need_generate = len (documents )
435+ await collection .asave ()
434436 return success ({})
435437
436438@router .put ("/collections/{collection_id}/questions" )
@@ -454,9 +456,9 @@ async def update_question(request, collection_id, question_in: QuestionIn):
454456 return fail (HTTPStatus .NOT_FOUND , "Question not found" )
455457
456458 question_instance .question = question_in .question
457- question_instance .answer = question_in .answer if question_instance .answer else ""
459+ question_instance .answer = question_in .answer if question_in .answer else ""
458460 question_instance .status = QuestionStatus .PENDING
459- question_instance .documents .clear ()
461+ await sync_to_async ( question_instance .documents .clear ) ()
460462
461463 if question_in .relate_ducuments :
462464 for document_id in question_in .relate_ducuments :
@@ -468,7 +470,8 @@ async def update_question(request, collection_id, question_in: QuestionIn):
468470 await question_instance .asave ()
469471 update_index_for_question .delay (question_instance .id )
470472
471- return success (question_instance .view ())
473+ relate_documents = await sync_to_async (list )(question_instance .documents .all ().values_list ('id' , flat = True ))
474+ return success (question_instance .view (relate_documents ))
472475
473476@router .delete ("/collections/{collection_id}/questions/{question_id}" )
474477async def delete_question (request , collection_id , question_id ):
@@ -478,13 +481,16 @@ async def delete_question(request, collection_id, question_id):
478481 if collection is None :
479482 return fail (HTTPStatus .NOT_FOUND , "Collection not found" )
480483
481- question_instance = Question .objects .get (id = question_id )
484+ question_instance = await query_question (user , collection_id , question_id )
485+ if question_instance is None :
486+ return fail (HTTPStatus .NOT_FOUND , "Question not found" )
482487 question_instance .status = QuestionStatus .DELETED
483488 question_instance .gmt_deleted = timezone .now ()
484489 await question_instance .asave ()
485490 update_index_for_question .delay (question_instance .id )
486491
487- return success (question_instance .view ())
492+ relate_documents = await sync_to_async (list )(question_instance .documents .all ().values_list ('id' , flat = True ))
493+ return success (question_instance .view (relate_documents ))
488494
489495@router .get ("/collections/{collection_id}/questions" )
490496async def list_questions (request , collection_id ):
@@ -496,7 +502,8 @@ async def list_questions(request, collection_id):
496502 pr = await query_questions (user , collection_id , build_pq (request ))
497503 response = []
498504 async for question in pr .data :
499- response .append (question .view ())
505+ relate_documents = await sync_to_async (list )(question .documents .all ().values_list ('id' , flat = True ))
506+ response .append (question .view (relate_documents ))
500507
501508 question_status = QuestionStatus .ACTIVE
502509 if collection .need_generate > 0 :
0 commit comments