Как вы передаете набор запросов в Django ManyToManyField. Ошибка: аргумент int () должен быть строкой, байтовым объектом или числом, а не QuerySet - PullRequest
0 голосов
/ 15 января 2019

Введение: Допустим, у меня есть модель Feeds, у которой есть пользователь и подписчики. Когда пользователь пишет сообщение. Все его последователи получают на своей домашней странице информацию о том, что подписчик написал сообщение.

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'

1 Ответ

0 голосов
/ 15 января 2019

Вы можете сделать это так:

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