我正在做一个应用程序,有多个考试和多个问题,每个考试。
这是我目前的“问题”模型:
class Question(models.Model):
exam = models.ForeignKey(Exam, related_name='questions', on_delete=models.CASCADE)
question = models.TextField()
explanation = models.TextField(blank=True, null=True)
TOPICS = [
('NA', 'Not Available'),
('Algebra', 'Algebra'),
('Geometry', 'Geometry'),
('Trig', 'Trigonometry'),
('Calc', 'Calculus'),
('Chem', 'Chemistry'),
('Geology', 'Geology'),
('Physics', 'Physics'),
('Reading', 'Reading'),
('Writing', 'Writing'),
('Spelling', 'Spelling'),
('Comprehension', 'Reading Comprehension'),
]
topic = models.CharField(max_length=20, choices=TOPICS, default='NA')
order = models.IntegerField(default=0)
created = models.DateTimeField(auto_now_add=True)
attempts = models.IntegerField(default=0, editable=False)
correct_attempts = models.IntegerField(default=0, editable=False)
class Meta:
unique_together = ['exam', 'order']
def __str__(self):
return f'{self.exam} - Q{self.order}'
除了“order”字段外,您几乎可以忽略所有字段。此字段显示问题在考试中出现的顺序。
我希望此顺序字段的默认值为考试中现有问题的数量+ 1。
例如,如果我的考试已经有两个问题,而我正尝试添加第三个问题,则此问题的顺序将默认为“3”,除非我手动更改它。
我知道这不起作用,但这个解决方案的工作原理与下面这行代码类似:
default=Question.objects.filter(exam=self.exam).count() + 1
我在为django中的模型创建函数方面缺乏经验,所以请让我知道我会如何做这样的事情,谢谢!
1条答案
按热度按时间tv6aics11#
我用以下代码重写保存()函数来解决这个问题: