为什么在 运行 基本 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]
一个简单的 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]