python - def __str__(self) 问题 - Django
问题描述
我正在尝试在 django 中打印我的数据库中的第一个对象的标题。但是,当我输入命令时
Project.objects.all()
在 shell 中,它只返回以下内容:
<QuerySet [<Project: Project object (1)>]>
这是我的代码:
# Create your models here.
class Project(models.Model):
title = models.CharField(max_length=100)
progress = models.FloatField(default=0)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
def __str__(self):
return self.title
class Task(models.Model):
project = models.ForeignKey(Project, on_delete=models.CASCADE)
title = models.CharField(max_length=100)
priority = models.SmallIntegerField(default=0)
open_date = models.DateTimeField()
close_date = models.DateTimeField()
status = models.SmallIntegerField(default=0)
def __str__(self):
return self.title
str部分似乎没有做任何事情,即使我故意拼错某些东西,也不会返回任何错误。似乎有一些线程存在类似问题,但目前还没有公认的解决方案。
我希望它返回我输入的标题,它应该是 <QuerySet [<Project: My First Project>]>。
在此先感谢您的帮助。
解决方案
通常,repr
在打印其容器时使用底层对象的 (例如,所有内置集合类型都这样做)。将方法的名称从更改__str__
为__repr__
,它应该可以解决您的问题。如果没有定义其他方法,则__str__
已经默认使用该方法,因此它仍然可以在其他字符串化场景中工作。__repr__
__str__
推荐阅读
- javascript - 如何解决安卓手机生成键盘导致我的屏幕被推送的问题?
- html - 无法将背景图像应用于 div
- ios - SwiftUI:仅支持纵向视图?
- python - 是否可以检查一个类是否调用了特定的方法?
- schema.org - Schema.org/Rich Snippets:页面上定义的多个 ListItem 元素
- java - 映射休眠实体多对一
- python - 存储在 Keras 模型中的单独“偏差”权重是什么意思?
- java - CameraX Image Analysis (with OUTPUT_IMAGE_FORMAT_RGBA_8888) : maxImages (4) 已经被获取,在获取更多之前调用#close
- azure - 如何使用 OIDC 设置多租户 Azure AD SSO
- bash - 如何自动化远程服务器上的任务。如何从一个响应中获取价值以添加到下一个命令中?