首页 > 解决方案 > 从用户关注的群组中获取帖子的最有效方法是什么?

问题描述

我正在尝试从用户关注的所有组中获取帖子对象。我能够获得用户关注的组列表和所有帖子的查询集,但我很难将对象传递给模板。

我的模型:

class Post(models.Model):
    user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete = models.PROTECT)
    title = models.CharField(max_length = 120, default = '', blank = False)
        body = models.TextField()

class Community(models.Model):
    title = models.CharField(max_length = 50, default = '', unique = True)
    followers = models.ManyToManyField(Account, related_name = "community_followers")
    posts = models.ManyToManyField(Post, blank = True, related_name = "community_posts")

    def __str__(self):
        return self.title

class Account(AbstractBaseUser):
    username = models.CharField(max_length = 30, unique = True)
    email = models.EmailField(verbose_name = "email", max_length = 50, unique = True)
    date_joined = models.DateTimeField(verbose_name = "date joined", auto_now_add = True)
    last_login = models.DateTimeField(verbose_name = "last login", auto_now = True) 
    is_admin = models.BooleanField(default = False)
    is_active = models.BooleanField(default = True)
    is_staff = models.BooleanField(default = False)
    is_superuser = models.BooleanField(default = False)

    USERNAME_FIELD = 'email'
    REQUIRED_FIELDS = ['username']


    objects = MyAccountManager()

风景:

user = request.user
user_communities = user.community_followers.all()
queries = []
for community in user_communities:
    queries.append(community.posts.all())

context['posts'] = queries

return render(request, "home/index.html", context)

模板:

{% for post in posts %}
    {{ post.title }}
    <hr>
{% endfor %}

没有任何帖子在模板中呈现,我似乎也无法订购它们。我认为我的实施中一定有问题。

标签: pythondjangodjango-models

解决方案


假设 Account 是 AUTH_USER_MODEL,您可以在一个查询中执行此操作:

Post.objects.filter(community_posts__followers=request.user)

(如果没有,请发布帐户模型。)


推荐阅读