在数据库中使用哪个查询

时间:2017-02-07 17:51:57

标签: python django sqlite

对于测验应用,我有以下型号

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。谢谢。

1 个答案:

答案 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