任务是这样的: Django 2.2 有一个已创建的帖子,并且该帖子有评论,您需要“拉出”评论总数并在模板中显示。好吧,因此,有必要使用每个新评论更新此计数器。
这是代码: models.py
class Post(models.Model):
...
comments = models.ForeignKey(
'Comments', on_delete=models.CASCADE,
blank=True, default='',
related_name='post',
verbose_name='Комментарии'
)
...
class Comments(models.Model):
author = models.ForeignKey(
settings.AUTH_USER_MODEL,
blank=True, default='',
on_delete=models.DO_NOTHING,
verbose_name='Автор: '
)
content = models.TextField(
'Комментарий',
blank=True,
default=''
)
like = models.PositiveIntegerField(
'Лайк',
default=0,
blank=True
)
dislike = models.PositiveIntegerField(
'Дизлайки',
default=0,
blank=True
)
date_pub = models.DateTimeField(
'Дата публикации',
auto_now=True
)
def __str__(self):
return f'Автор: {self.author}, Дата публикации: {self.date_pub}'
视图.py
from django.shortcuts import render
from .models import Post
def index_page(request):
posts = Post.objects.all()
context = {
'posts': posts,
}
return render(request, 'news/index.html', context)
样本
{% block content %}
<div class="container">
{% for post in posts %}
<div class="card">
<div class="card-header">
{{ post.author }}
<br>
{{ post.date_pub }}
<br>
<br>
<small>
Просмотры: <span class="badge">{{ post.view_counter }}</span> |
Комментарии: <span class="badge">{{ post.comments }}</span>
</small>
</div>
<div class="card-body">
<h5 class="card-title">{{ post.title }}</h5>
<p class="card-text">{{ post.content|truncatewords:20 }}</p>
<div class="mb-3">
{% if user.is_authenticate %}
<button type="button" class="btn btn-info btn-sm">
Нравится <span class="badge badge-light">{{ post.like }}</span>
</button>
<button type="button" class="btn btn-danger btn-sm">
Не нравится <span class="badge badge-light">{{ post.dislike }}</span>
</button>
{% else %}
<button type="button" class="btn btn-info btn-sm" disabled>
Нравится <span class="badge badge-light">{{ post.like }}</span>
</button>
<button type="button" class="btn btn-danger btn-sm" disabled>
Не нравится <span class="badge badge-light">{{ post.dislike }}</span>
</button>
{% endif %}
</div>
<a href="#" class="btn btn-primary">Читать!</a>
</div>
</div>
{% endfor %}
</div>
{% endblock %}
谢谢你。
模型.py
视图.py
索引.html