python manage.py shell # 运行命令行
命令行交互会根据 settings.py
设置的内容导入。
1. 引入
>>> from FirstApp.models import Question # 引入创建的 Question 模型
>>> from django.utils import timezone # 引入以创建当前时间 timezone.now()
2. 对象的基本操作
>>> q = Question(question_text='第一个问题', pub_date=timezone.now()) # 创建一条内容
>>> q.save() # 将更新保存到数据库
>>> q.id # 8:查看生成的条目ID
>>> q.question_text = '更新第一个问题' # 修改条目内容>>>
>>> Question.objects.all() # <QuerySet [<Question: 第一个应用名称是什么?>,...]>
# 默认是查看 Question 模型条目数量 <QuerySet [<Question: Question object (1)>]> 。经过模型中 __str__ 函数的修改,显示效果如左。
3. filter() 筛选
# 根据ID筛选
>>> Question.objects.filter(id=1) # <QuerySet [<Question: 第一个应用名称是什么?>]>
# 根据问题描述(question_text)开头筛选
>>> Question.objects.filter(question_text__startswith='第三') # <QuerySet [<Question: 第三个问题?>]>
# 根据发布年份是筛选
>>> Question.objects.filter(pub_date__year='2019') # <QuerySet [<Question: 第一个应用名称是什么?>,...]>
# 对于不存在条目,不会报错
>>> Question.objects.filter(id=222) # <QuerySet []>
4. get() 获取
>>> Question.objects.get(id=1) # <Question: 第一个应用名称是什么?>
# 跟上面的区别是没有 QuerySet,可以直接获得条目对象
>>> Question.objects.get(id=222) # DoesNotExist: Question matching query does not exist.
# 对于不存在条目会报错
5. 对应 Choice 的操作
>>> q = Question.objects.get(id=1) # 获取一个问题条目
>>> q.choice_set.create(choice_text='FirstApp', votes=0) # 创建对应 Choice(因为更改过模型的 __str__ 所以会有如左效果)
# <Choice: 选项 “FirstApp” 获得0票>
>>> q.choice_set.count() # 3:获取 Choice 总数
>>> q.choice_set.all() # 查看 Question id=2 对应的所有 Choice
# <QuerySet [<Choice: 选项 “FriutApp” 获得0票>,...>]>
>>> c = q.choice_set.filter(choice_text__startswith='NApp') # 筛选描述为 First 开头的 Choice 选项条目
>>> c.delete() # 删除条目
>>> Choice.objects.filter(question__pub_date__year = '2019') # 筛选发布年份是2019的问题对应的选项集合
# <QuerySet [<Choice: 选...]>