1. python manage.py shell # 运行命令行

命令行交互会根据 settings.py 设置的内容导入。

1. 引入

  1. >>> from FirstApp.models import Question # 引入创建的 Question 模型
  2. >>> from django.utils import timezone # 引入以创建当前时间 timezone.now()

2. 对象的基本操作

  1. >>> q = Question(question_text='第一个问题', pub_date=timezone.now()) # 创建一条内容
  2. >>> q.save() # 将更新保存到数据库
  3. >>> q.id # 8:查看生成的条目ID
  4. >>> q.question_text = '更新第一个问题' # 修改条目内容>>>
  5. >>> Question.objects.all() # <QuerySet [<Question: 第一个应用名称是什么?>,...]>
  6. # 默认是查看 Question 模型条目数量 <QuerySet [<Question: Question object (1)>]> 。经过模型中 __str__ 函数的修改,显示效果如左。

3. filter() 筛选

  1. # 根据ID筛选
  2. >>> Question.objects.filter(id=1) # <QuerySet [<Question: 第一个应用名称是什么?>]>
  3. # 根据问题描述(question_text)开头筛选
  4. >>> Question.objects.filter(question_text__startswith='第三') # <QuerySet [<Question: 第三个问题?>]>
  5. # 根据发布年份是筛选
  6. >>> Question.objects.filter(pub_date__year='2019') # <QuerySet [<Question: 第一个应用名称是什么?>,...]>
  7. # 对于不存在条目,不会报错
  8. >>> Question.objects.filter(id=222) # <QuerySet []>

4. get() 获取

  1. >>> Question.objects.get(id=1) # <Question: 第一个应用名称是什么?>
  2. # 跟上面的区别是没有 QuerySet,可以直接获得条目对象
  3. >>> Question.objects.get(id=222) # DoesNotExist: Question matching query does not exist.
  4. # 对于不存在条目会报错

5. 对应 Choice 的操作

  1. >>> q = Question.objects.get(id=1) # 获取一个问题条目
  2. >>> q.choice_set.create(choice_text='FirstApp', votes=0) # 创建对应 Choice(因为更改过模型的 __str__ 所以会有如左效果)
  3. # <Choice: 选项 “FirstApp” 获得0票>
  4. >>> q.choice_set.count() # 3:获取 Choice 总数
  5. >>> q.choice_set.all() # 查看 Question id=2 对应的所有 Choice
  6. # <QuerySet [<Choice: 选项 “FriutApp” 获得0票>,...>]>
  7. >>> c = q.choice_set.filter(choice_text__startswith='NApp') # 筛选描述为 First 开头的 Choice 选项条目
  8. >>> c.delete() # 删除条目
  9. >>> Choice.objects.filter(question__pub_date__year = '2019') # 筛选发布年份是2019的问题对应的选项集合
  10. # <QuerySet [<Choice: 选...]>