文章

Django Shell

嗯,是的,下午到现在,刚才更新之后看了一下<毒液>这部电影,是的,还是自己的站看的.感觉没昨天的好看,但是好歹休息了很长...一部电影那么长的时间了,继续  下面学习 Django Shell

当我们输入一些数据后,就可以通过交互式终端以编程的方式查看这些数据了

这种交互式环境成为DJango Shell 

是测试项目和排除其故障的理想之地,下面是一个Shell会话示例:

(ll_env) C:\Users\Administrator\learning_log>python manage.py shell
Python 3.7.0 (v3.7.0:1bf9cc5093, Jun 27 2018, 04:59:51) [MSC v.1914 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> from learning_logs.models import Topic
>>> Topic.objects.all()
<QuerySet [<Topic: chess>, <Topic: Rock Climbing>]>

在活动的虚拟环境中执行时,命令python manage.py shell启动一个python解释器,可使用他来探索存储在项目数据库中的数据

在这里我们导入了模块learning_logs.models中的模型Topic

然后使用方法Topic.objects.all()来获取模型Topic的所有实例.

他返回的是一个列表,成为查询集(queryset)

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

>>> topics=Topic.objects.all()
>>> for topic in topics:
...     print(topic.id,topic)#别忘了这里有缩进,输入之后没翻译再按次回车

我们将返回的查询集存储在topics中,然后打印每个主题的ID属性和字符串.

从输出可以知道主题chess的id为2,Rock Climbing的id为3(其实是1和2,我这里之所以是2和3是因为我在前面的示例瞎玩瞎建瞎删除了几个)

知道对象id之后,就可以获取该对象并查看其任何属性,下面看看Chess的属性text和date_added的值:

>>> t = Topic.objects.get(id=2)#你们的id输1
>>> t.text
'chess'
>>> t.date_added
datetime.datetime(2018, 11, 18, 12, 5, 35, 968833, tzinfo=<UTC>)

我们还可以查看与主题相关联的条目,前面我们给模型Entry定义了属性topic这是一个ForeignKey,将条目与主题关联起来.利用这种关联,Django能获取与特定主题相关联的所有条目:

>>> t.entry_set.all()
<QuerySet [<Entry: 测试测试测试,测试测试测试,测试测试测试,测试测试测试,测试测试测试,测试测试测试,测试测试测试,测...>, <Entry: 测试测试测试,测试测试测试,测试测试测试,测试测试测试,测试测试测试,测试测试测试,测试测试测试,测...>]>
为通过外联关系获取数据,可使用相关模型的小写名称.下划线和单词set

每次修改模型后,你都需要重启shell,这样才能看到修改的结果.要退出shell的话,可按ctrl+D 如果是windows 按ctr+Z再按回车

原文来自:Django Shell,尊重自己,尊重每一个人;转发请注明来源!
0 0

发表评论