diff --git a/submission/migrations/0003_add_contest_create_time_idx.py b/submission/migrations/0003_add_contest_create_time_idx.py new file mode 100644 index 0000000..fa87854 --- /dev/null +++ b/submission/migrations/0003_add_contest_create_time_idx.py @@ -0,0 +1,19 @@ +# Generated by Django 6.0 on 2026-03-09 13:06 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('contest', '0001_initial'), + ('problem', '0005_remove_spj_fields'), + ('submission', '0002_submission_user_create_time_idx'), + ] + + operations = [ + migrations.AddIndex( + model_name='submission', + index=models.Index(fields=['contest_id', '-create_time'], name='contest_create_time_idx'), + ), + ] diff --git a/submission/models.py b/submission/models.py index 7d7a6cb..c7ca45d 100644 --- a/submission/models.py +++ b/submission/models.py @@ -62,6 +62,9 @@ class Submission(models.Model): models.Index( fields=["user_id", "create_time"], name="user_create_time_idx" ), + models.Index( + fields=["contest_id", "-create_time"], name="contest_create_time_idx" + ), ] def __str__(self): diff --git a/submission/views/oj.py b/submission/views/oj.py index 52d2fad..d23e28b 100644 --- a/submission/views/oj.py +++ b/submission/views/oj.py @@ -159,7 +159,7 @@ class SubmissionListAPI(APIView): return self.error("Parameter error") submissions = Submission.objects.filter(contest_id__isnull=True).select_related( - "problem", "problem__created_by" + "problem" ).order_by("-create_time") problem_id = request.GET.get("problem_id") myself = request.GET.get("myself") @@ -207,7 +207,7 @@ class ContestSubmissionListAPI(APIView): contest = self.contest submissions = Submission.objects.filter(contest_id=contest.id).select_related( - "problem", "problem__created_by" + "problem", "contest" ).order_by("-create_time") problem_id = request.GET.get("problem_id") myself = request.GET.get("myself")