【发布时间】:2018-05-11 20:00:24
【问题描述】:
我有一个 Post 模型
class Post(models.Model):
user = models.ForeignKey(User, related_name="posts",on_delete=models.CASCADE,default=None)
在 views.py 文件中,我尝试根据特定过滤器返回我正在查看的用户的帖子(到目前为止一切正常),所以:
class UserPosts(generic.ListView):
model = models.Post
template_name = "posts/user_post_list.html"
def get_queryset(self):
self.y= self.model.objects.filter(user__username__iexact=self.kwargs.get("username"))
return self.y.filter(message__icontains="jk")
然后我尝试使用用户名(我的模板中这篇文章的作者)所以我尝试了(这也有效):
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context["post_user"] = self.kwargs.get("username")
return context
然后我想到了另一种方法来做(get_context_data方法)。
我认为它应该工作,但它没有......我不知道为什么!所以这是不起作用的代码,并且通过我一个错误:
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context["post_user"] = self.y.username
return context
错误是:
'QuerySet' object has no attribute 'username'
那么为什么我无法通过模型获取用户名?我知道这是错误的,但是从模型中提取这些帖子的用户名的正确方法是什么,而不是使用 url 的 slug;我的意思是 context["post_user"] = self.kwargs.get("username")
对不起,如果那太长了,但我尽量说清楚..谢谢
【问题讨论】:
标签: django django-models django-views