我有一个在Django中构建的问答类型的网站,具有以下模型:
class Question(models.Model):
title = models.CharField(max_length=70)
details = models.TextField()
class Answer(models.Model):
question_id = IntegerField()
details = models.TextField()
我需要显示一个特定的问题及其答案。 通常我需要2个查询来做到这一点:
Question.objects.get(id=1)
Answer.objects.get(question_id=1)[:10]
我希望使用一个查询检索所有内容。 在MySQL中,它将是:
SELECT *
FROM Question JOIN Answer ON Question.id=Answer.question_id
WHERE Question.id=1
LIMIT 10
有没有反正我可以通过Django的ORM做到这一点? 在这种情况下会有帮助吗?
考虑使用
models.ForeignKey(Question)
而不是question_id = IntegerField()
。这是表达您试图描绘的问题和答案之间关系的最佳(更多关系)方式。
通过这种方式,您可以简单地调用
Answers.objects.filter(question_id=<id>)
并准确获得您要查找的内容。