很难描述我想做什么,但我会尝试。在我过滤了这样的模型之后(我最多只能得到一个对象):
tweets = Tweet.objects.filter(user__iexact=username) # username variable I got from URL
我想表明,哪位用户写了这条推文。所以我试图在我的模板中这样做:
<h1>{{tweets.username}}</h1>
但是,它没有显示任何内容。顺便说一下,这是我的模特:
class Tweet(models.Model):
text = models.CharField(max_length=140)
date = models.DateField(default=date.today)
username = models.CharField(max_length=140)
答案 0 :(得分:1)
如果您要查询唯一条目,请使用 .get
tweets = Tweet.objects.get(username__iexact=username)
而不是 .filter 。
filter()方法将返回一个数组,即使它只是一个结果。
而且,您的查询错误...您的模型上有用户名,而不是用户
(username__iexact=username)
答案 1 :(得分:0)
您需要按照以下方式过滤推文:
tweets = Tweet.objects.filter(username__iexact=username)
如果您只想要一条推文:
tweet = Tweet.objects.get(username__iexact=username)
返回哪个推文实例取决于模型的默认顺序,id
,除非您在模型的Meta
选项中指定它。
在模板中,您需要循环播放返回的推文以显示仅存在于实例上的tweet.username
,或者您需要传入用户名并显示:
<h1>{{ username }}</h1>
答案 2 :(得分:0)
上面描述的推文模型没有任何字段用户,因此过滤器user__iexact将不起作用。
假设用户名不是唯一的,因为模型没有将用户名字段描述为唯一
这可以改为: tweets = Tweet.objects.filter(username__iexact = username)
过滤器查询始终返回对象列表。 要访问第一个对象,请使用tweets [0]
显示用户名,我们可以使用推文[0] .username