fix: use pk=None pattern for problem cloning, consistent with AddContestProblemAPI

This commit is contained in:
2026-05-21 19:24:08 -06:00
parent 9c1b958444
commit 083747c241

View File

@@ -312,38 +312,14 @@ class ContestCloneAPI(APIView):
) )
for problem in Problem.objects.filter(contest=original): for problem in Problem.objects.filter(contest=original):
new_problem = Problem.objects.create( tags = problem.tags.all()
_id=problem._id, problem.pk = None
contest=new_contest, problem.contest = new_contest
is_public=problem.is_public, problem.submission_number = 0
title=problem.title, problem.accepted_number = 0
description=problem.description, problem.statistic_info = {}
input_description=problem.input_description, problem.created_by = request.user
output_description=problem.output_description, problem.save()
samples=problem.samples, problem.tags.set(tags)
test_case_id=problem.test_case_id,
test_case_score=problem.test_case_score,
hint=problem.hint,
languages=problem.languages,
template=problem.template,
created_by=request.user,
time_limit=problem.time_limit,
memory_limit=problem.memory_limit,
io_mode=problem.io_mode,
rule_type=problem.rule_type,
visible=problem.visible,
difficulty=problem.difficulty,
source=problem.source,
prompt=problem.prompt,
answers=problem.answers,
total_score=problem.total_score,
share_submission=problem.share_submission,
allow_flowchart=problem.allow_flowchart,
mermaid_code=problem.mermaid_code,
flowchart_data=problem.flowchart_data,
flowchart_hint=problem.flowchart_hint,
show_flowchart=problem.show_flowchart,
)
new_problem.tags.set(problem.tags.all())
return self.success(ContestAdminSerializer(new_contest).data) return self.success(ContestAdminSerializer(new_contest).data)