如何让我的所有提要排除我评论的内容
How to get all my feeds exclude which is commented by me
有三个类
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"}],
]
但事实上,returns 错误的结果:
[
"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
请参阅 https://docs.djangoproject.com/en/1.11/ref/models/querysets/#prefetch-related 以了解有关 prefetch_related 的更多信息。
有三个类
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"}],
]
但事实上,returns 错误的结果:
[
"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
请参阅 https://docs.djangoproject.com/en/1.11/ref/models/querysets/#prefetch-related 以了解有关 prefetch_related 的更多信息。