Mysql 用in子句连接两个表
所以我有两个包含主键“User”的模型Mysql 用in子句连接两个表,mysql,sql,django,Mysql,Sql,Django,所以我有两个包含主键“User”的模型 class Reviews(models.Model): subject_user = models.ForeignKey(User,related_name='reviewed_user') class Friendship(models.Model): head_user = models.ForeignKey(User,related_name='followed') 现在我想找到Friendsip.head\u用户中所有用户的评
class Reviews(models.Model):
subject_user = models.ForeignKey(User,related_name='reviewed_user')
class Friendship(models.Model):
head_user = models.ForeignKey(User,related_name='followed')
现在我想找到Friendsip.head\u用户中所有用户的评论。。。像这样的
SELECT * FROM reviews JOIN friendship WHERE reviews.subject_user_id IN friendship.head_user_id
OR
SELECT * FROM reviews JOIN friendship ON reviews.subject_user_id = friendship.head_user_id
在Django我怎么做。SQL可能并不完美,只是为了解释我要做的事情。使用“选择相关”
Reviews.objects.all().select_related('friendship__ head_user_id')
或者继续读下去
或者这可能会有所帮助:Django ORM与SQL有点不同。输出数据应该是什么样子?好的,我需要的是评论对象列表和所有相应的用户对象Severy review有一个subject\u User。在您的回答中,您使用了。all for the Reviews并忽略了subject\u User部分。实际上,我在评论模型中还有很多其他字段,比如tail_user=models.ForeignKeyUser等等。。。所以,它应该像Reviews.objects.all.select相关的“友谊”\uuuuuu head\uu user\uid“,“评论”\uuuu subject\uu user\uid”这个答案很容易让人误解,甚至是错误的。select_related不会以任何方式将外部模型中的列添加到基础对象中。它所做的只是使已经存在的外键关系更有效。据我所知,他只是想加入外键,而不是添加新的culomns,select_related就是这样做的。如果我对这个问题不是很清楚,很抱歉。我用例子重新解释了它