如何使用django ORM构建具有两个左连接的SQL查询
我需要构建一个MySQL查询,我想首先尝试使用django ORM,然后使用raw作为最后手段 我找到了关于单联接或两个表之间联接的文档,但没有关于三个表之间联接的示例或至少是简单(初学者)的解释 models.py的内容是如何使用django ORM构建具有两个左连接的SQL查询,django,orm,left-join,Django,Orm,Left Join,我需要构建一个MySQL查询,我想首先尝试使用django ORM,然后使用raw作为最后手段 我找到了关于单联接或两个表之间联接的文档,但没有关于三个表之间联接的示例或至少是简单(初学者)的解释 models.py的内容是 from django.db import models # Create your models here. class Threads(models.Model): name = models.CharField(max_length=100) aut
from django.db import models
# Create your models here.
class Threads(models.Model):
name = models.CharField(max_length=100)
author = models.CharField(max_length=100)
date = models.DateTimeField("date published")
slug = models.SlugField()
def __unicode__(self):
return self.name
class Posts(models.Model):
name = models.CharField(max_length=100)
text = models.TextField()
author = models.CharField(max_length=100)
date = models.DateTimeField("date published")
slug = models.SlugField()
def __unicode__(self):
return self.name
class Relations(models.Model):
thread = models.ForeignKey(Threads, related_name = "%(app_label)s_%(class)s_related")
post = models.ForeignKey(Posts, related_name = "%(app_label)s_%(class)s_related")
这是我试图构建的原始SQL查询
SELECT forum_threads.id AS t_id, forum_threads.name AS t_name, forum_threads.slug AS t_slug, forum_posts.*
FROM forum_threads
LEFT JOIN forum_relations ON forum_threads.id=forum_relations.thread_id
LEFT JOIN forum_posts ON forum_relations.post_id=forum_posts.id
WHERE forum_threads.slug="<slug_name>"
GROUP BY forum_threads.id
第一个查询是从slug中检索线程id,第二个查询返回该线程id上和线程相关的所有post
我将尝试使用M2M部件,因为我至少有一个工作示例。为什么不使用关系,如果需要,可以使用
然后你就可以通过slug得到一条线
thread = Threads.objects.get(slug=slug_name)
然后,您可以通过访问与线程相关的帖子
thread.posts_set.all()
好啊尝试了这种方法,它也可以工作,而不是使用thread.posts\u set.all(),我使用了thread.posts.all()。谢谢你的帮助。
thread.posts_set.all()