显示总帖子的用户列表

时间:2018-05-20 03:49:22

标签: python django

如何在单独的HTML页面中显示用户列表中包含的帖子总数?

models.py

class Post(models.Model):
    author       =  models.ForeignKey(User.request, on_delete = models.CASCADE)
    title        =  models.CharField(max_length=100)
    text         =  models.TextField()
    slug         =  models.SlugField(unique=True, blank=True, default=uuid.uuid1)
    created_date =  models.DateTimeField(default=timezone.now)
    likes        =  models.ManyToManyField(User, related_name='post_likes', blank = True)

    def get_like_url(self):
       return reverse("posts:like-toggle", kwargs={"slug": self.slug})

    def get_api_like_url(self):
       return reverse("posts:like-api-toggle", kwargs={"slug": self.slug})

    def get_absolute_url(self):
       return reverse("post_detail",kwargs={'pk':self.pk})

    def __str__(self):
       return self.title

    def count_posts_of(user):
       return Post.objects.filter(author=user).count()

2 个答案:

答案 0 :(得分:2)

你必须学习MVC架构(django中的MVT)。

作为初学者,首先要创建一个示例项目来理解这一点 - https://docs.djangoproject.com/en/2.0/intro/tutorial01/

了解models.py的撰写方式 - https://docs.djangoproject.com/en/2.0/topics/db/models/
以及如何撰写views.py - https://docs.djangoproject.com/en/2.0/topics/class-based-views/
然后在urls.py - https://docs.djangoproject.com/en/2.0/topics/http/urls/

中将它们连接起来

答案 1 :(得分:0)

这是我目前的解决方案,但可以采用不同的方式。

首先,将count_posts_of方法添加到您的用户模型中,无论它是什么。 例如,我自己创建了一个用户模型,并将此方法添加到其中,如下所示:

models.py

class User(models.Model):
name = models.CharField(max_length=100, blank=True, null=True)

@property
def count_posts_of(self):
    return self.post_set.all().count()

现在在视图中将所有用户传递为上下文:

views.py

def user_post(request):
context = {'users': User.objects.all()}
return render(request, 'future/user_post_view.html', context)

最后在模板中显示用户及其帖子'数:

user_post_view.html

{% for user in users %}
{{ user.name }} :
{{ user.count_posts_of }},
{% endfor %}