python - 基于另一个查询集过滤一个查询集

标签 python django django-queryset

我有一个名为 UserCommunityProfiles 的模型,其结构如下

class UserCommunityProfile(models.Model):
    owner = models.ForeignKey(
        User,
        on_delete = models.CASCADE)
    (...)

和一个称为结构化订阅的模型:

class subscriptions(models.Model):
    subscriber = models.ForeignKey(
        User,
        on_delete = models.CASCADE, related_name='subscriber'
    )
    subscribed_to = models.ForeignKey(
        User,
        on_delete = models.CASCADE, related_name='subscribed_to'
    )

我想要实现的是将不在查询集中订阅中的每个用户的配置文件显示为 subscribed_to 并且订阅者是 request.user

我所做的就是我所做的 View

subs = subscriptions.objects.filter(subscriber=request.user)
profiles = UserCommunityProfile.objects.exclude(owner=subs)

但我收到一条错误消息,提示 无法将 QuerySet 用于“订阅”:将 QuerySet 用于“用户”。 我该怎么办?

最佳答案

解决方法:

subs=User.objects.filter(subscribed_to__subscriber=request.user).values_list('id')
profiles = UserCommunityProfile.objects.exclude(owner__in=subs)

关于python - 基于另一个查询集过滤一个查询集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52005636/

相关文章:

python - Tensorflow 占位符具有负维度

python - 匹配 2 个数据集之间列中的值,更新多个列

python - Django 框架 : ModuleNotFoundError. 。 .'bootstrapform'

django-queryset - Django-MPTT-按直系后代的数量对根节点进行排序

python - 获取单个模型的多个查询集列表

python - 执行 gensim.LdaMallet 时出错

python返回多次

使用蝗虫的 Django 负载测试给出 Csrf token 错误

python - 将可编辑字段作为 Django-Rest-Framework Serializer 的validated_data 方法传递

python - 在 Django 中从 ids 列表手动创建查询集