如何进行多级查询?我的模型是
from django.db import models
class Subjects(models.Model):
name=models.CharField(max_length=20)
pub_date= models.DateTimeField(auto_now=True)
def __str__(self):
return self.name
class Question(models.Model):
subject = models.ForeignKey(Subjects)
ques = models.CharField(max_length=100)
pub_date=models.DateTimeField(auto_now=True)
def __str__(self):
return self.ques
class Answer(models.Model):
question = models.ForeignKey(Question)
ans1 = models.CharField(max_length=50)
ans2 = models.CharField(max_length=50)
ans3 = models.CharField(max_length=50)
def __str__(self):
return self.ans1
我想从第2号题目查询第23号问题并回答第2号。以相反的顺序,我想查询Answer.objects.get(pk = 2),这是Question.objects.get(pk = 23)的答案,该问题来自Subjects.objects.get(pk = 2)。我怎么能这样做?
答案 0 :(得分:0)
就像这样
s = Subjects.objects.get(name="No.2")
q = Question.objects.get(subject=s, ques="no.23")
a = Answer.objects.get(question=q, ans2="some answer?")
答案 1 :(得分:0)
如果需要,您可以使用关系或反向关系:
Answer.objects.filter(id=2, question__id=23, question__subject__id=2)
这将返回Answer
个查询集。如果您想拥有Subjects
个查询集:
Subjects.object.filter(id=1, question__id=23, question__answer__id=2)
在第二个查询中,您使用的是反向关系,其中您使用小写的模型名称作为关联按钮。但由于一对多关系方向,Subjects
queryset可能具有重复值。因此,您可以使用distinct()
从结果查询集中删除重复项。