django上有一个任务是实现训练服务的API。在管理面板中,应该可以创建问题,在此基础上构建测试。用户只能参加一次测试,回答每个问题时,结果立即显示真/假并带有评论。
问题的本质:为给定服务设计模型的正确性如何?这是我的选择
from django.db import models
from django.contrib.auth.models import User
class Question(models.Model):
text = models.CharField(verbose_name='Текст', max_length=250)
num_right = models.IntegerField(verbose_name='Кол-во правильных ответов')
class Meta:
verbose_name = 'Вопрос'
verbose_name_plural = 'Вопросы'
ordering = ['id']
class Answer(models.Model):
question = models.ForeignKey(Question, on_delete=models.CASCADE)
text=models.CharField(verbose_name='Ответ', max_length=250)
right = models.BooleanField(verbose_name='Правильный', default=False)
class Test(models.Model):
title = models.CharField(verbose_name='Тема', max_length=250)
Questions = models.ManyToManyField(Question)
class Meta:
verbose_name = 'Тест'
verbose_name_plural = 'Тесты'
ordering = ['id']
class Topic(models.Model):
title = models.CharField(verbose_name='Название', max_length=250)
theory = models.CharField(verbose_name='Теория', max_length=1000)
tests = models.ManyToManyField(Test)
class Meta:
verbose_name = 'Тема'
verbose_name_plural = 'Темы'
ordering = ['id']
class Test_Result(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
test = models.ForeignKey(Test, on_delete=models.CASCADE)
result = models.CharField(verbose_name='Результат', max_length=300)
创建答案时,您可以使用创建答案的表单创建问题。我想做相反的事情,以便在创建问题时可以创建答案,如何在模型中为此创建一个字段?
假设在管理面板中创建问题时,还可以添加任意数量的答案并指出正确的答案(一个或多个)。我使用一对多的关系,即 一问多答。如何在 Question 模型中定义一个字段,以便在创建问题时,您可以直接在管理面板中创建与其关联的答案?使用多对多关系时,有一个字段用于从相关表中选择对象。一般来说,我很乐意听取有关 API 实施的任何建议。我正在使用 Django-rest-framework
https://docs.djangoproject.com/en/4.0/intro/tutorial07/
部分添加相关对象。admin.StackedInline 和 admin.TabularInline 类
edu_service 应用程序中的 admin.py 文件