(env) $: python manage.py makemigrations blogpost
Migrations for 'blogpost':
blogpost/migrations/0001_initial.py
- Create model Blog
- Create model Category
- Create model Tag
- Add field category to blog
- Add field tags to blog
生成如下文件:
migrations/
├── 0001_initial.py
├── __init__.py
第二步执行migrate命名与数据库同步:
(env)$:python manage.py migrate
Operations to perform:
Apply all migrations: admin, auth, blogpost, contenttypes, sessions
Running migrations:
Applying blogpost.0001_initial... OK
(env) $:python manage.py createsuperuser
Username (leave blank to use 'apple'): blog
Email address:
Password:
Password (again):
Superuser created successfully.
Tag与Category相同。__str__ 函数表示对象如何显示自己,一般系统默认使用<Blog: Blog object>来表示对象, 通过这个函数可以告诉系统使用title或name字段来表示这个对象。
Django Shell
现在我们进入django shell进行数据库相关操作,执行manage.py shell命令:
(env)$:python manage.py shell
Python 3.5.2 (v3.5.2:4def2a2901a5, Jun 26 2016, 10:47:25)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>>
获取数据(查)数据
all方法获取所有对象,get方法获取一个满足条件的对象。
>>> from blogpost.models import Blog
>>> Blog.objects.all()#查询所有数据对象
<QuerySet [<Blog: django教程>, <Blog: Django教程二>]>
>>> Blog.objects.get(id=1)#获取id=1的对象
<Blog: django教程>
>>> Blog.objects.get(title='Django教程二')#获取title='Django教程二'的对象
<Blog: Django教程二>
# 获取对象的属性信息>>> b = Blog.objects.get(id=1)
>>> b.title
'django教程'>>> b.content
'这是一篇django实战开放教程,开发系统为MacOS,开发环境为Python3.5+Django1.11。'
创建数据(增加)数据
两种创建数据的方法
>>> from blogpost.models import Blog, Category, Tag
>>> Category.objects.create(name='python test')
<Category: python test>
>>> t = Tag(name='learning django test')
>>> t.save()
>>>