gpt4 book ai didi

Django:使用 Django ORM 实现 JOIN?

转载 作者:行者123 更新时间:2023-12-03 00:31:35 29 4
gpt4 key购买 nike

我有一个用 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 来做到这一点吗?在这种情况下,extra() 有帮助吗?

最佳答案

这正是select_related()做。唯一的问题是你必须从答案模型开始,而不是问题模型,但是结果是一样的:

answers = Answer.objects.filter(question_id=1).select_related() 

现在每个答案对象都有一个预取的“问题”属性,并且访问它不会再次访问数据库。

关于Django:使用 Django ORM 实现 JOIN?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4125379/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com