PyCharm搭建Django入门——(一)设计模型

环境:win10
开发平台:PyCharm2019.1.2(Professional Edition)
python版本:python3.6

一、新建Django项目

File->New Project->
PyCharm搭建Django入门——(一)设计模型_第1张图片
PyCharm会自建Django项目,并安装好所需第三方库(Django、sqlparse、pytz)

二、创建新的应用

在界面中的Terminal中输入命令 python manage.py startapp booktest//booktest为应用名称
创建成后,目录结构如下
PyCharm搭建Django入门——(一)设计模型_第2张图片

三、定义模型类

在应用中定义模型(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’
参考网址
PyCharm搭建Django入门——(一)设计模型_第3张图片

四、生成数据表

  • 激活模型:编辑settings.py文件,将booktest应用加入到installed_apps中
    PyCharm搭建Django入门——(一)设计模型_第4张图片
  • 生成迁移文件:根据模型类生成sql语句:python manage.py makemigrations
    PyCharm搭建Django入门——(一)设计模型_第5张图片
  • 迁移文件被生成到应用的migrations目录

PyCharm搭建Django入门——(一)设计模型_第6张图片

  • 执行迁移:执行sql语句生成数据表:python manage.py migrate
    PyCharm搭建Django入门——(一)设计模型_第7张图片

五、测试数据操作

  • 进入python shell,进行简单的模型API练习:python manage.py shell
  • 进入shell后提示如下:
    PyCharm搭建Django入门——(一)设计模型_第8张图片
#引入需要的包
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()

PyCharm搭建Django入门——(一)设计模型_第9张图片

六、关联对象的操作

  • 对于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调出数据库查看数据
PyCharm搭建Django入门——(一)设计模型_第10张图片
2、在shell中想退出shell界面可以输入quit()或者Ctrl+Z
若有错误,请多多指正!!!

你可能感兴趣的:(Python)