add problem answers
This commit is contained in:
18
problem/migrations/0003_problem_answers.py
Normal file
18
problem/migrations/0003_problem_answers.py
Normal file
@@ -0,0 +1,18 @@
|
||||
# Generated by Django 5.2.3 on 2025-10-03 16:56
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('problem', '0002_problem_prompt'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='problem',
|
||||
name='answers',
|
||||
field=models.JSONField(null=True),
|
||||
),
|
||||
]
|
||||
@@ -1,6 +1,5 @@
|
||||
from django.conf import settings
|
||||
from django.db import models
|
||||
from utils.models import JSONField
|
||||
|
||||
from account.models import User
|
||||
from contest.models import Contest
|
||||
@@ -51,13 +50,13 @@ class Problem(models.Model):
|
||||
input_description = RichTextField()
|
||||
output_description = RichTextField()
|
||||
# [{input: "test", output: "123"}, {input: "test123", output: "456"}]
|
||||
samples = JSONField()
|
||||
samples = models.JSONField()
|
||||
test_case_id = models.TextField()
|
||||
# [{"input_name": "1.in", "output_name": "1.out", "score": 0}]
|
||||
test_case_score = JSONField()
|
||||
test_case_score = models.JSONField()
|
||||
hint = RichTextField(null=True)
|
||||
languages = JSONField()
|
||||
template = JSONField()
|
||||
languages = models.JSONField()
|
||||
template = models.JSONField()
|
||||
create_time = models.DateTimeField(auto_now_add=True)
|
||||
# we can not use auto_now here
|
||||
last_update_time = models.DateTimeField(auto_now=True, null=True)
|
||||
@@ -67,7 +66,7 @@ class Problem(models.Model):
|
||||
# MB
|
||||
memory_limit = models.IntegerField()
|
||||
# io mode
|
||||
io_mode = JSONField(default=_default_io_mode)
|
||||
io_mode = models.JSONField(default=_default_io_mode)
|
||||
# special judge related
|
||||
spj = models.BooleanField(default=False)
|
||||
spj_language = models.TextField(null=True)
|
||||
@@ -80,12 +79,14 @@ class Problem(models.Model):
|
||||
tags = models.ManyToManyField(ProblemTag)
|
||||
source = models.TextField(null=True)
|
||||
prompt = models.TextField(null=True)
|
||||
# [{language: "python", code: "..."}]
|
||||
answers = models.JSONField(null=True)
|
||||
# for OI mode
|
||||
total_score = models.IntegerField(default=0)
|
||||
submission_number = models.BigIntegerField(default=0)
|
||||
accepted_number = models.BigIntegerField(default=0)
|
||||
# {JudgeStatus.ACCEPTED: 3, JudgeStatus.WRONG_ANSWER: 11}, the number means count
|
||||
statistic_info = JSONField(default=dict)
|
||||
statistic_info = models.JSONField(default=dict)
|
||||
share_submission = models.BooleanField(default=False)
|
||||
|
||||
class Meta:
|
||||
|
||||
@@ -25,6 +25,11 @@ class CreateSampleSerializer(serializers.Serializer):
|
||||
output = serializers.CharField(trim_whitespace=False)
|
||||
|
||||
|
||||
class CreateAnswerSerializer(serializers.Serializer):
|
||||
language = serializers.CharField()
|
||||
code = serializers.CharField()
|
||||
|
||||
|
||||
class CreateTestCaseScoreSerializer(serializers.Serializer):
|
||||
input_name = serializers.CharField(max_length=32)
|
||||
output_name = serializers.CharField(max_length=32)
|
||||
@@ -80,6 +85,11 @@ class CreateOrEditProblemSerializer(serializers.Serializer):
|
||||
hint = serializers.CharField(allow_blank=True, allow_null=True)
|
||||
source = serializers.CharField(max_length=256, allow_blank=True, allow_null=True)
|
||||
prompt = serializers.CharField(allow_blank=True, allow_null=True)
|
||||
answers = serializers.ListField(
|
||||
child=CreateAnswerSerializer(),
|
||||
allow_empty=True,
|
||||
allow_null=True,
|
||||
)
|
||||
share_submission = serializers.BooleanField()
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user