你好,我是悦创。

    在我们创建一个 models 里面创建数据库之后,并在后台插入数据之后,我们可以通过 shell 来查看里面的数据。

    Django-Shell - 图1

    也就是可以通过交互式终端会话以编程方式查看这些数据了。这种交互式环境称为 Django Shell ,是测试项目和排除其故障的理想之地。下面是一个交互式 shell 会话的示例:

    1. (djangoenv) AppledeMacBook-Pro:learning_log apple$ python3 manage.py shell
    2. Python 3.7.7 (default, Mar 10 2020, 15:43:03)
    3. [Clang 11.0.0 (clang-1100.0.33.17)] on darwin
    4. Type "help", "copyright", "credits" or "license" for more information.
    5. (InteractiveConsole)
    6. >>> from learning_logs.models import Topic
    7. >>> Topic.objects
    8. <django.db.models.manager.Manager object at 0x10c4d2c50>
    9. >>> Topic.objects.all()
    10. <QuerySet [<Topic: AI悦创>, <Topic: 本站由自带的 BGM 有兴趣的小伙伴可以点开听一听哦!>]>
    11. >>>


    在活动的虚拟环境中执行时,命令 python3 manage.py shell 启动一个 Python 解释器,可使用它来检索存储在项目数据库中的数据。在这里,我们导入了模块 learning_logs.models 中的模型 Topic 「from learning_logs.models import Topic」,然后使用方法 Topic.objects.all() 来获取模型 Topic 的所有实例;它返回的是一个列表,称为查询集(queryset)。

    我们可以像遍历列表一样遍历查询集。下面演示了如何查看分配给每个主题对象的 ID:

    1. >>> topics = Topic.objects.all()
    2. >>> for topic in topics:
    3. ... print(topic.id, topic)
    4. ...
    5. 1 AI悦创
    6. 2 本站由自带的 BGM 有兴趣的小伙伴可以点开听一听哦!


    我们将返回的查询集存储在 topics 中,然后打印每个主题的 id 属性和字符串表示。从输出可知,主题 AI悦创 的 ID 为 1,而 本站由自带的 BGM 有兴趣的小伙伴可以点开听一听哦! ID 为 2。

    知道对象的 ID 之后,就可以获取该对象并查看其任何属性。下面来看看主题 AI悦创 的属性 text 和 date_added 的值。

    1. >>> t = Topic.objects.get(id=1)
    2. >>> t
    3. <Topic: AI悦创>
    4. >>> t.text
    5. 'AI悦创'
    6. >>> t.date_added
    7. datetime.datetime(2020, 9, 12, 15, 2, 6, 64394, tzinfo=<UTC>)
    8. >>>


    我们还可以查看与主题关联的条目。

    前面我们给模型 Entry 定义了属性 topic ,这是一个 ForeignKey ,将条目与主题关联起来。利用这种关联,Django 能够获取与特定主题相关的所有条目,如下所示:

    1. >>> t.entry_set
    2. <django.db.models.fields.related_descriptors.create_reverse_many_to_one_manager.<locals>.RelatedManager object at 0x10c4d2b90>
    3. >>> t.entry_set.all()
    4. <QuerySet [<Entry: 焦平面是以焦点为中心的的十字形 上下都为焦平面?...>]>
    5. >>>