Django的新手,所以请耐心等待......
我有一个用户对发布到网站的文章发表的评论列表。对于每个评论,我给出发布它的用户的名字。 我想要它,以便当您点击用户名时,它会将您带到所有该用户评论的列表。但是,我无法弄清楚如何指定在我的views.py
文件中。
以下代码使列表中包含指向用户名的链接:
{% for comment in article.comments.all %}
<ul class="list-group">
<li class="list-group-item">{{ comment }}
<div class="Link-detail">
<a href="{% url 'Article:by_user' comment.author%}">
@{{ comment.author }}
</a>
</div>
</li>
</ul>
{% endfor %}
当您点击链接时,它会转到urls.py
文件中指定的正确网址,因此没有任何问题。
模板工作正常,我循环浏览评论:
{% for comment in comment_list %}
<li>{{ comment.text }}</li>
{% endfor %}
我认为模型是正确的:
class Comment(models.Model):
article = models.ForeignKey(Article, related_name='comments',
on_delete=models.CASCADE)
author = models.ForeignKey(User, related_name='usercomments',
on_delete=models.CASCADE)
text = models.TextField()
created_date = models.DateTimeField(auto_now=True)
def __str__(self):
return self.text
class Meta():
ordering = ['-created_date']
所以,这是我迷路的地方:
class UserComments(ListView):
model = Comment
template_name = "news/user_comment_list.html"
context_object_name = 'comment_list'
我将基于类的视图设置为ListView
,拉入model
,分配template_name
和context_object_name
,但我可以&#39 ; t弄清楚如何过滤它,以便返回到context_object_name
的信息被过滤到与点击的comment.author名称对应的列表。
如何获取该链接名称并在过滤器中使用它,我该怎么做?
该过滤器应该如何构建?
答案 0 :(得分:1)
您可以覆盖get_queryset
并使用网址中的用户名过滤查询集。您可以从self.kwargs
。
class UserComments(LoginRequewdListView):
model = Comment
template_name = "news/user_comment_list.html"
context_object_name = 'comment_list'
def get_queryset(self):
queryset = super(UserComments, self).get_queryset()
return queryset.filter(author__username=self.kwargs['username'])
您可能需要根据您的网址格式稍微调整过滤器。
答案 1 :(得分:0)
您可以覆盖get_context_data()
。有关详细信息,请参阅documentation.希望这有帮助!