对于测验应用,我有以下型号
class Question(models.Model):
question_id=models.IntegerField(default=0)
question_text=models.CharField(max_length=1000)
def __str__(self):
return self.question_text
class Options(models.Model):
question=models.ForeignKey(Question,on_delete=models.CASCADE)
options=models.CharField(max_length=500)
is_answer=models.BooleanField(default=False)
def __str__(self):
return self.options
每个问题只有一个选项设置为True。我需要找到问题的选项,即将is_answer
字段设置为True。哪个是最好的查询?我正在使用Sqlite。谢谢。
答案 0 :(得分:1)
你可以这样做:
# Get a Question instance. Your implementation may be different.
question = Question.objects.get(pk=question_pk)
correct_option = question.options_set.filter(is_answer=True).first()
执行question.options_set.filter(is_answer=True)
会将Options
个具有FK的实例的查询集返回给question
实例,这样.first()
就会返回查询集中的第一个实例。
你也可以get
一个特定的选项(给定"每个问题只有一个选项设置为True"):
try:
question.options_set.get(is_answer=True)
except Options.DoesNotExist:
raise