【问题标题】:View articles by author in Django blog在 Django 博客中按作者查看文章
【发布时间】:2018-05-08 18:25:57
【问题描述】:

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

【问题讨论】:

    标签: python django


    【解决方案1】:

    考虑到author,它是auth.User 的ForeignKey。

    您的查询应该是

    Article.objects.filter(author__username=username)
    

    而不是 ...Article.objects.filter(author=username)

    【讨论】:

      【解决方案2】:

      发布您的模型,但我假设模型之间的关联是外键。因此,模型文章中的“作者”可能是 ID 而不是字符串。因此,请尝试检索“danny 的 ID”,而不是用户名“danny”。

      【讨论】:

      • 酷,我想这会让我走上正确的道路。我只是在学习 Django,所以这对我来说是全新的。我更新了我的模型。有什么语法提示吗?
      • 祝你好运。到目前为止,语法相当标准。通过您的编辑,作者是一个 id 而不是一个字符串。所以过滤时使用 id,你也必须在你的 url 函数中更改正则表达式。在 url stackoverflow.com/questions/23420655/… 中查看整数正则表达式
      猜你喜欢
      • 2017-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-28
      • 2019-02-24
      • 2015-06-03
      • 2021-07-23
      相关资源
      最近更新 更多