首页 > 解决方案 > 在 Django 博客中按作者查看文章

问题描述

我正在尝试创建一个视图,允许人们查看特定作者撰写的所有博客文章。这是我正在使用的 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 是一个有效的用户名,它应该是一个字符串,而不是一个整数,所以我不确定这里出了什么问题。有任何想法吗?

标签: pythondjango

解决方案


考虑到author,这是一个 ForeignKey auth.User

您的查询应该是

Article.objects.filter(author__username=username)

代替 ...Article.objects.filter(author=username)


推荐阅读