环境:win10
开发平台:PyCharm2019.1.2(Professional Edition)
python版本:python3.6
一、新建Django项目
File->New Project->
PyCharm会自建Django项目,并安装好所需第三方库(Django、sqlparse、pytz)
二、创建新的应用
在界面中的Terminal中输入命令 python manage.py startapp booktest//booktest为应用名称
创建成后,目录结构如下
三、定义模型类
在应用中定义模型(booktest->models.py)
- 有一个数据表,就有一个模型类与之对应
- 打开models.py文件,定义模型类
- 引入包from django.db import
- models 模型类继承自models.Model类
- 说明:不需要定义主键列,在生成时会自动添加,并且值为自动增长
- 当输出对象时,会调用对象的str方法
from django.db import models
class BookInfo(models.Model):
btitle = models.CharField(max_length=20)
bpub_date = models.DateTimeField()
def __str__(self):
return "%d" % self.pk
class HeroInfo(models.Model):
hname = models.CharField(max_length=20)
hgender = models.BooleanField()
hcontent = models.CharField(max_length=100)
hBook = models.ForeignKey('BookInfo',on_delete=models.CASCADE)
def __str__(self):
return "%d" % self.pk
PS:在django2.0后,定义外键和一对一关系的时候需要加on_delete选项,此参数为了避免两个表里的数据不一致问题,不然下一步迁移时会报错:
TypeError: init() missing 1 required positional argument: ‘on_delete’
参考网址
四、生成数据表
- 激活模型:编辑settings.py文件,将booktest应用加入到installed_apps中
- 生成迁移文件:根据模型类生成sql语句:python manage.py makemigrations
- 迁移文件被生成到应用的migrations目录
- 执行迁移:执行sql语句生成数据表:python manage.py migrate
五、测试数据操作
- 进入python shell,进行简单的模型API练习:python manage.py shell
- 进入shell后提示如下:
#引入需要的包
from booktest.models import BookInfo,HeroInfo
from django.utils import timezone
from datetime import *
#查询所有图书信息
BookInfo.objects.all()
#新建图书信息
b = BookInfo()
b.btitle="射雕英雄传"
b.bpub_date=datetime(year=1990,month=1,day=10)
b.save()
#查找图书信息
b=BookInfo.objects.get(pk=1)
#输出图书信息
b
b.id
b.btitle
#修改图书信息:
b.btitle=u"天龙八部"
b.save()
#删除图书信息:
b.delete()
六、关联对象的操作
- 对于HeroInfo可以按照上面的操作方式进行
- 添加,注意添加关联对象
h=HeroInfo()
h.hname=u'郭靖'
h.hgender=True
h.hcontent=u'降龙十八掌'
h.hBook=b
h.save()
- 获得关联集合:返回当前book对象的所有hero
b.heroinfo_set.all()
- 有一个HeroInfo存在,必须要有一个BookInfo对象,提供了创建关联的数据:
h=b.heroinfo_set.create(hname=u'黄蓉',hgender=False,hcontent=u'打狗棍法')
h
PS:
1、在Shell中无法直观查看数据,可在PyCharm中View->Tool Windows->Database调出数据库查看数据
2、在shell中想退出shell界面可以输入quit()或者Ctrl+Z
若有错误,请多多指正!!!