我正在尝试创建一个视图,允许用户查看特定作者撰写的所有博客帖子。这是我正在使用的URL模式:
url(r'^user/(?P<username>[\w-]+)/$', views.user_articles, name="user_articles"),
这是我的观点:
def user_articles(request, username):
articles = Article.objects.filter(author=username).order_by('-date')
return render(request, "articles/article_list.html", {'articles': articles})
这将返回错误:
ValueError at /articles/user/danny/
invalid literal for int() with base 10: 'danny'
编辑以添加模型:
class Article(models.Model):
title = models.CharField(max_length=100)
slug = models.SlugField(max_length=100, unique=True)
body = HTMLField('Body')
date = models.DateTimeField(auto_now_add=True)
thumb = models.ImageField(default="keys.jpg", blank=True)
author = models.ForeignKey(User, default=None)
danny是一个有效的用户名,它应该是一个字符串,而不是一个整数,所以我不确定这里出了什么问题。有什么想法吗?
答案 0 :(得分:2)
发布你的模型,但我假设模型之间的关联,是一个外键。因此,您的模型文章中的“作者”可能是ID而不是字符串。因此,而不是用户名'danny'尝试检索'danny的ID。
答案 1 :(得分:2)
考虑author
,这是auth.User
的一个ForeignKey。
您的查询应该是
Article.objects.filter(author__username=username)
而不是...... Article.objects.filter(author=username)