如何在单独的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()
答案 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 %}