Django 如何得到我所有的饲料排除这是我的评论

Django 如何得到我所有的饲料排除这是我的评论,django,django-orm,Django,Django Orm,有三节课 class User(models.Model): name = models.CharField() class Feed(models.Model): user = models.ForeignKey(User) class Comment(models.Model): user = models.ForeignKey(User) feed = models.ForeignKey(Feed) 如果我指定了一个名为Jack的用户,那么如何获取Jack的提要和评论

有三节课

class User(models.Model):
  name = models.CharField()

class Feed(models.Model):
  user = models.ForeignKey(User)

class Comment(models.Model):
  user = models.ForeignKey(User)
  feed = models.ForeignKey(Feed)
如果我指定了一个名为Jack的用户,那么如何获取Jack的提要和评论,而不获取评论用户(如果不是Jack)的评论

如果有两个插孔馈电:

[
  "feed1": [{"comment1": {"user": "Lily"}}, {"comment2": {"user": "Bruce"}],
  "feed2": [{"comment1": {"user": "Jack"}}, {"comment2": {"user":"Lily"}],
]
我使用以下代码获得:

Feed.objects.filter(user__name="Jack").exclude(comment__user__name="Jack")
我想得到结果:

[
  "feed1": [{"comment1": {"user": "Lily"}}, {"comment2": {"user": "Bruce"}],
  "feed2": [{"comment2": {"user":"Lily"}],
]
但事实上,它返回了错误的结果:

[
  "feed1": [{"comment1": {"user": "Lily"}}, {"comment2": {"user": "Bruce"}]
]

我只想删除Jack没有评论的评论,但它会删除所有提要,如果其中一条评论有相同的用户Jack

您可以预取除Jack评论之外的所有评论

feeds = Feed.objects.filter(user__name="Jack").prefetch_related(
Prefetch(
"feed_set",
queryset="comment.objects.exclude(user__name='Jack')",
to_attr='all_comments'
)
您可以通过以下方式获得每个提要的注释:

for feed in feeds:
    comments = feed.all_comments #No database call is made by this statement

请参阅以了解有关预回迁的更多信息。

您可以预回迁除jack评论以外的所有评论

feeds = Feed.objects.filter(user__name="Jack").prefetch_related(
Prefetch(
"feed_set",
queryset="comment.objects.exclude(user__name='Jack')",
to_attr='all_comments'
)
您可以通过以下方式获得每个提要的注释:

for feed in feeds:
    comments = feed.all_comments #No database call is made by this statement

请参阅以了解有关预回迁的更多信息。

首先,您应该检索用户的所有提要,然后,您可以检索每个提要上的所有评论,不包括Jackson发布的评论。这是唯一的方法吗???连接SQLU需要两次,您可以使用预回迁优化它。我不知道这是不是唯一的办法。也许其他开发人员有不同的方法。首先,你应该检索用户的所有提要,然后,你可以检索每个提要上的所有评论,不包括Jackson发布的评论。这是唯一的方法吗???连接SQLU需要两次,您可以使用预回迁优化它。我不知道这是不是唯一的办法。也许其他开发人员有不同的方法。你真是太棒了!!!你解决了我的问题,这对我来说很难!!!非常感谢你!!!我很高兴能帮助你。你很好!!!你解决了我的问题,这对我来说很难!!!非常感谢你!!!我很乐意帮助你。