首页 > 解决方案 > 如何在 Django ManyToManyField 中传递查询集。错误:int() 参数必须是字符串、类似字节的对象或数字,而不是 'QuerySet'

问题描述

简介:假设我有一个包含用户和关注者的 Feed 模型。当用户写帖子时。他所有的追随者都会在他们的主页上看到他们关注的人写了一个帖子。

class Feed(models.Model):
    being_followed = models.ForeignKey(User, blank=True, null=True, related_name="feeds_for_followers")
    follower = models.ManyToManyField(User, blank=True, related_name="homepage_feeds")        
    being_followed_post = models.ForeignKey(Post, blank=True, null=True)
    created_at = models.DateTimeField(auto_now_add=True)

我的问题:现在,如果您看到下面的 post_create 视图。用户是 request.user 帖子就是帖子。但是我正在使用代码添加关注者

users_followers = post_user.followers.all()
for follower in users_followers: 
    feed.follower.add(follower) 

这是非常低效的。有没有办法可以将整个查询集 users_followers 添加到关注者 ManytoManyField

我试过了

followers = user.followers.all()
feed.follower.add(followers)

我收到以下错误

int() 参数必须是字符串、类似字节的对象或数字,而不是 'QuerySet'

标签: djangopython-3.xdjango-modelsdjango-viewsdjango-queryset

解决方案


你可以这样做:

users_followers = post_user.followers.all()
feed.follower.add(*users_followers) 

推荐阅读