为什么在 运行 基本 Django 查询时出现 Invalid literal for int() 异常错误?

Why do I get Invalid literal for int() exception error when running basic django query?

一个简单的 django 查询不起作用,我想知道为什么

models.py

class Entry(models.Model):
    headline= models.CharField(max_length=200,)
    body_text = models.TextField()
    author=models.ForeignKey(settings.AUTH_USER_MODEL, related_name='entryauthors')
    pub_date=models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return u'%s %s %s %s %s %s %s' % (self.headline, self.body_text, self.author, self.pub_date)

在django中shell或者在我看来我已经尝试过

itemstosell = Entry.objects.get(author=username)[:4]

这导致:

Exception Type: ValueError
Exception Value: invalid literal for int() with base 10: 'john'

因为 author 是一个外键,因此将是对用户模型上的主键的引用,该主键可能是一个整数。你应该做的

itemstosell = Entry.objects.get(author__username=username)[:4]

默认情况下,"get" 方法只有 return 1 个结果。我们这样使用它: itemstosell = Entry.objects.get(pk=1)

"filter" 方法可以 return 一个 QuerySet,如果你想使用 "(author__username=username)[:4]" 作为选项,你应该使用这种风格: itemstosell = Entry.objects.filter(author__username=用户名)[:4]