获取具有相同M2M字段的所有对象

时间:2018-02-09 18:45:28

标签: django m2m

我正在寻找一种方法来筛选具有相同M2M字段查询集的相同类型的所有对象。

class Comment(models.Model):
    user = models.ForeignKey(User, related_name='comment_user')    
    content = models.CharField(max_length=5000, null=True)

    private_to = models.ManyToManyField(User, null=True, related_name='private_to')

给定一个评论对象,我想检索具有相同M2M字段的所有其他评论(即如果private_to字段返回用户1和用户2作为评论,它将找到包含这两个评论的所有其他评论private_to字段中的用户。)

是否有简洁的内置方式来执行此操作?

1 个答案:

答案 0 :(得分:0)

尝试this post中的内容:

comment = Comment.objects.all()[0] # Or the comment you want to filter by.

private_to_ids = list(comment.private_to.all().values_list('id', flat=True))
comments = Comment.objects.filter(private_to__exact=private_to_ids)