我有一个模范供追随者使用.以下是模型:

class Follow(models.Model):
    followee = models.ForeignKey(User, on_delete=models.CASCADE, related_name="followee")

    follower = models.ForeignKey(User, on_delete=models.CASCADE, related_name="follower")

    created_at = models.DateTimeField(auto_now_add=True, verbose_name="created at")
    updated_at = models.DateTimeField(auto_now=True, verbose_name="updated at")

    class Meta:
        unique_together = ["followee", "follower"]

    def __str__(self):
        return "{} is following {}".format(self.follower, self.followee)

    def save(self, *args, **kwargs):
        if self.followee == self.follower:
            return "You cannot follow yourself"
        else:
            super().save(*args, **kwargs)

用户可以创建多种类型的对象,如帖子和问题.我想要显示所有用户的所有帖子和问题,跟随特定的用户.简化显示我所有的帖子和问题的用户关注我.

我正在使用一个名为drf_multiple_model的模块,这是我的视图,我无法使用它.它给出了我不理解的以下错误:

Cannot use QuerySet for "Follow": Use a QuerySet for "User".

以下是我使用的视图:

def get_followers(queryset, request, *args, **kwargs):
    id = kwargs['user']
    user = User.objects.get(id=id)
    followers = Follow.objects.all().filter(followee=user)
    return queryset.filter(user__in=followers)

class HomeView(FlatMultipleModelAPIView):
    permission_classes = [IsAuthenticated]

    def get_querylist(self):

        querylist = [ 
            {'queryset':Post.objects.all(), 'serializer_class': UserPostSerializer, 'filter_fn': get_followers, 'label':'post'},
            {'queryset':Question.objects.all(), 'serializer_class': QuestionSerializer, 'filter_fn': get_followers, 'label':'question'},
        ]
        return querylist

请问我做错了什么?

推荐答案

为了能够使用__in过滤器,followers应该是User的可迭代.试试这个:

followers = [f.follower f或 f in Follow.objects.filter(followee=user)]

followers = [f.follower f或 f in user.follower.all()]

Django相关问答推荐

使用FormWizard将信息从视图传递到表单

自定义公钥打破Django管理内联逻辑

以特定顺序获取模型实例时出现问题

DRF中是否有有效的更新有序数据的算法?

如何显示日期?

AttributeError:';ManyToOneRel&39;对象没有属性';attname';

如何在Django表单中传递self.请求数据?

如何使用来自另一个字段的信息创建字段

DecimalField 验证错误,返回不正确的值 Django

基于每个条目的 Django Queryset 过滤

如何根据反向外键相关模型的字段过滤 QuerySet?

django 管理员登录突然要求 csrf 令牌

在 django web 应用程序中,如何给用户自己的子域?

如何按名称设置 django 模型字段?

Django JavaScript 文件

__init__() 得到了一个意外的关键字参数user

django post_save 更新信号

如何使用或使用 Django 的模型过滤系统?

Django:AppRegistryNotReady()

获取'str'对象在Django中没有属性'get'