change enum
This commit is contained in:
@@ -3,16 +3,22 @@ from django.db import models
|
||||
from account.models import User
|
||||
|
||||
|
||||
class TutorialType(models.TextChoices):
|
||||
PYTHON = "python", "Python"
|
||||
C = "c", "C"
|
||||
|
||||
|
||||
class ExerciseType(models.TextChoices):
|
||||
MCQ = "mcq", "选择题"
|
||||
SORT = "sort", "代码排序"
|
||||
FILL = "fill", "代码填空"
|
||||
|
||||
|
||||
class Tutorial(models.Model):
|
||||
TYPE_CHOICES = [
|
||||
('python', 'Python'),
|
||||
('c', 'C'),
|
||||
]
|
||||
|
||||
title = models.CharField(max_length=128)
|
||||
content = models.TextField()
|
||||
code = models.TextField(null=True, blank=True)
|
||||
type = models.CharField(max_length=10, choices=TYPE_CHOICES, default='python')
|
||||
type = models.CharField(max_length=10, choices=TutorialType.choices, default=TutorialType.PYTHON)
|
||||
created_by = models.ForeignKey(User, on_delete=models.CASCADE)
|
||||
created_at = models.DateTimeField(auto_now_add=True)
|
||||
updated_at = models.DateTimeField(auto_now=True)
|
||||
@@ -21,21 +27,15 @@ class Tutorial(models.Model):
|
||||
|
||||
class Meta:
|
||||
db_table = "tutorial"
|
||||
ordering = ['order', '-created_at']
|
||||
ordering = ["order", "-created_at"]
|
||||
|
||||
def __str__(self):
|
||||
return self.title
|
||||
|
||||
|
||||
class Exercise(models.Model):
|
||||
TYPE_CHOICES = [
|
||||
("mcq", "选择题"),
|
||||
("sort", "代码排序"),
|
||||
("fill", "代码填空"),
|
||||
]
|
||||
|
||||
tutorial = models.ForeignKey(Tutorial, on_delete=models.CASCADE, related_name="exercises")
|
||||
type = models.CharField(max_length=16, choices=TYPE_CHOICES)
|
||||
type = models.CharField(max_length=16, choices=ExerciseType.choices)
|
||||
data = models.JSONField()
|
||||
order = models.IntegerField(default=0)
|
||||
created_at = models.DateTimeField(auto_now_add=True)
|
||||
@@ -45,4 +45,4 @@ class Exercise(models.Model):
|
||||
ordering = ["order", "created_at"]
|
||||
|
||||
def __str__(self):
|
||||
return f"{self.get_type_display()} (Order {self.order})"
|
||||
return f"{self.get_type_display()} (Order {self.order})"
|
||||
|
||||
@@ -2,7 +2,7 @@ from rest_framework import serializers
|
||||
|
||||
from account.serializers import UserSerializer
|
||||
|
||||
from .models import Exercise, Tutorial
|
||||
from .models import Exercise, ExerciseType, Tutorial
|
||||
|
||||
|
||||
class TutorialListSerializer(serializers.ModelSerializer):
|
||||
@@ -65,13 +65,13 @@ class ExerciseSerializer(serializers.ModelSerializer):
|
||||
|
||||
class CreateExerciseSerializer(serializers.Serializer):
|
||||
tutorial_id = serializers.IntegerField()
|
||||
type = serializers.ChoiceField(choices=["mcq", "sort", "fill"])
|
||||
type = serializers.ChoiceField(choices=ExerciseType.choices)
|
||||
data = serializers.JSONField()
|
||||
order = serializers.IntegerField(default=0)
|
||||
|
||||
|
||||
class EditExerciseSerializer(serializers.Serializer):
|
||||
id = serializers.IntegerField()
|
||||
type = serializers.ChoiceField(choices=["mcq", "sort", "fill"])
|
||||
type = serializers.ChoiceField(choices=ExerciseType.choices)
|
||||
data = serializers.JSONField()
|
||||
order = serializers.IntegerField(default=0)
|
||||
|
||||
Reference in New Issue
Block a user