所以我已经成功地将Django连接到一个预先存在的数据库(检查,验证和同步),我创建了一个应用程序和一个项目以及所有这些(我正在阅读Django书,我在第5章),但是当我实际运行它并打印东西时,我得到一个(假定的)错误.在python中,我正确导入我需要的东西(from myapp.models import Artist)但是如果我尝试打印,例如,表(print Artist.objects.all()[:5])中的前五行,我得到这个:
[<Artist: Artist object>, <Artist: Artist object>, <Artist: Artist object>, <Artist: Artist object>, <Artist: Artist object>]
Run Code Online (Sandbox Code Playgroud)
为什么它不实际打印值而不是看似占位符?这里有什么我想念的吗?
agf*_*agf 19
Django使用ORM(对象关系映射器)在Python对象和数据库行之间来回转换数据.因此,当您使用它从数据库中获取项目时,它会将其转换为Python对象.
如果该对象没有定义如何将自己显示为文本,Django会为您完成.Python做同样的事情:
>>> class MyObject(object):
... pass
...
>>> [MyObject(), MyObject()]
[<__main__.MyObject object at 0x0480E650>,
<__main__.MyObject object at 0x0480E350>]
Run Code Online (Sandbox Code Playgroud)
如果要查看每个对象的行的所有实际值,请使用values.
以下是文档中的示例:
# This list contains a Blog object.
>>> Blog.objects.filter(name__startswith='Beatles')
[<Blog: Beatles Blog>]
# This list contains a dictionary.
>>> Blog.objects.filter(name__startswith='Beatles').values()
[{'id': 1, 'name': 'Beatles Blog', 'tagline': 'All the latest Beatles news.'}]
Run Code Online (Sandbox Code Playgroud)
更新:
在Python 3.x中,使用__str__而不是__unicode__
您看到的是Artist模型实例列表.您的值在python对象中.如果您希望对这些实例的表示更有帮助,您应该__unicode__为它们定义用于打印有用内容的方法:
https://docs.djangoproject.com/en/dev/ref/models/instances/?from=olddocs#unicode
它不是占位符,它是实际对象的表示形式,转换为unicode.
| 归档时间: |
|
| 查看次数: |
37537 次 |
| 最近记录: |