你好,我是悦创。
在我们创建一个 models 里面创建数据库之后,并在后台插入数据之后,我们可以通过 shell 来查看里面的数据。
也就是可以通过交互式终端会话以编程方式查看这些数据了。这种交互式环境称为 Django Shell ,是测试项目和排除其故障的理想之地。下面是一个交互式 shell 会话的示例:
(djangoenv) AppledeMacBook-Pro:learning_log apple$ python3 manage.py shell
Python 3.7.7 (default, Mar 10 2020, 15:43:03)
[Clang 11.0.0 (clang-1100.0.33.17)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> from learning_logs.models import Topic
>>> Topic.objects
<django.db.models.manager.Manager object at 0x10c4d2c50>
>>> Topic.objects.all()
<QuerySet [<Topic: AI悦创>, <Topic: 本站由自带的 BGM 有兴趣的小伙伴可以点开听一听哦!>]>
>>>
在活动的虚拟环境中执行时,命令 python3 manage.py shell 启动一个 Python 解释器,可使用它来检索存储在项目数据库中的数据。在这里,我们导入了模块 learning_logs.models 中的模型 Topic 「from learning_logs.models import Topic」,然后使用方法 Topic.objects.all() 来获取模型 Topic 的所有实例;它返回的是一个列表,称为查询集(queryset)。
我们可以像遍历列表一样遍历查询集。下面演示了如何查看分配给每个主题对象的 ID:
>>> topics = Topic.objects.all()
>>> for topic in topics:
... print(topic.id, topic)
...
1 AI悦创
2 本站由自带的 BGM 有兴趣的小伙伴可以点开听一听哦!
我们将返回的查询集存储在 topics 中,然后打印每个主题的 id 属性和字符串表示。从输出可知,主题 AI悦创
的 ID 为 1,而 本站由自带的 BGM 有兴趣的小伙伴可以点开听一听哦!
ID 为 2。
知道对象的 ID 之后,就可以获取该对象并查看其任何属性。下面来看看主题 AI悦创
的属性 text 和 date_added 的值。
>>> t = Topic.objects.get(id=1)
>>> t
<Topic: AI悦创>
>>> t.text
'AI悦创'
>>> t.date_added
datetime.datetime(2020, 9, 12, 15, 2, 6, 64394, tzinfo=<UTC>)
>>>
我们还可以查看与主题关联的条目。
前面我们给模型 Entry 定义了属性 topic ,这是一个 ForeignKey ,将条目与主题关联起来。利用这种关联,Django 能够获取与特定主题相关的所有条目,如下所示:
>>> t.entry_set
<django.db.models.fields.related_descriptors.create_reverse_many_to_one_manager.<locals>.RelatedManager object at 0x10c4d2b90>
>>> t.entry_set.all()
<QuerySet [<Entry: 焦平面是以焦点为中心的的十字形 上下都为焦平面?...>]>
>>>