Question.objects.all() 没有返回预期的内容



嗨,所以我正在按照 Django 的官方指南编码,但我的代码遇到了一些麻烦。

我正在使用 Python shell,我正在运行Question.objects.all()命令,它返回以下内容:

<QuerySet [<Question: Question object (1)>, <Question: Question object (2)>]>

我正在寻找的答案是<QuerySet [<Question: What's up?>]>

我正在寻找的答案是<QuerySet [<Question: What's up?>]>

如果您的数据库有两个Question对象,则Question.objects.all()永远不会只返回一个结果。 (你真的是说你只想要一个结果吗?

默认情况下,打印模型对象时,它将打印模型主键。 如果你想要不同的行为,那么正如 Avinash 评论的那样,你需要覆盖 Question 类中的__str__方法,如下所示:

class Question(models.Model):
# fields go here
def __str__(self):
return self.text # or whatever field(s) you want

当您定义模型时

class Question(models.Model):
id = models.AutoField(primary_key =True)
question = models.CharField(max_length = 250)
def __str__(self):
return self.question

因此,您需要编写这样的str函数,以便在运行查询时,对象将根据您的要求显示。

如果你只想要一个结果,你也可以使用 get:

Question.objects.get(text='I want this text')

请注意,如果有多个条目与此条件匹配,这将引发错误。这就是为什么 get 通常与 id 或其他一些唯一条目一起使用的原因。

, <Question:>]>

我正在寻找的答案是]>

保存这些更改并通过再次运行 python manage.py shell 来启动新的 Python 交互式 shell:

最新更新