zoukankan      html  css  js  c++  java
  • 19 01 15 django 数据库设计模型 管理站点 注意:在引入外键在django 2以上改版

    模型设计

    我们之前操作数据库是通过写sql语句  ORM框架    可以通过不写sql  语句来进行操作数据库

    1.定义模型类

    模型类定义在models.py文件中,继承自models.Model类。

    说明:不需要定义主键列,在生成时会自动添加,并且值为自动增长。

    设计图书类

    图书类:

    • 类名:BookInfo
    • 图书名称:btitle
    • 图书发布日期:bpub_date
    模型类的设计

    根据设计,在models.py中定义模型类如下

    from django.db import models
    
    class BookInfo(models.Model):
        btitle = models.CharField(max_length=20)
        bpub_date = models.DateField()

    2.迁移

    迁移由两步完成:

    • 1.生成迁移文件:根据模型类生成创建表的迁移文件。
    • 2.执行迁移:根据第一步生成的迁移文件在数据库中创建表

    生成迁移文件命令如下:

    python manage.py makemigrations
    执行迁移命令如下:
    python manage.py migrate

    设计英雄类

    英雄类:

    • 类名:HeroInfo
    • 英雄姓名:hname
    • 英雄性别:hgender
    • 英雄简介:hcomment
    • 英雄所属图书:hbook
    • 图书-英雄的关系为一对多

    打开booktest/models.py,定义英雄类代码如下:

    class HeroInfo(models.Model):
        hname = models.CharField(max_length=20)
        hgender = models.BooleanField()
        hcomment = models.CharField(max_length=100)
        hbook = models.ForeignKey('BookInfo', on_delete=models.CASCADE)
    注意    在 新版本中  引入外键改为        hbook = models.ForeignKey('BookInfo', on_delete=models.CASCADE)

    3.数据操作

    完成数据表的迁移之后,下面就可以通过进入项目的shell,进行简单的API操作。如果需要退出项目,可以使用ctrl+d快捷键或输入quit()。

    进入项目shell的命令:

    python manage.py shell




    首先引入booktest/models中的类:

    from booktest.models import BookInfo,HeroInfo
    

    查询所有图书信息:

    BookInfo.objects.all()
    

    因为当前并没有数据,所以返回空列表

    查询

    新建图书对象:

    b=BookInfo()
    b.btitle="射雕英雄传"
    from datetime import date
    b.bpub_date=date(1991,1,31)
    b.save()
    

    添加

    再次查询所有图书信息:

    BookInfo.objects.all()
    

    查询2

    查找图书信息并查看值:

    b=BookInfo.objects.get(id=1)
    b
    b.id
    b.btitle
    b.bpub_date
    

    查找

    修改图书信息:

    b.bpub_date=date(2017,1,1)
    b.save()
    b.bpub_date
    

    修改

    删除图书信息:

    b.delete()
    

    删除

    对象的关联操作

    对于HeroInfo可以按照上面的方式进行增删改查操作。

    创建一个BookInfo对象

    b=BookInfo()
    b.btitle='abc'
    b.bpub_date=date(2017,1,1)
    b.save()
    

    创建一个HeroInfo对象

    h=HeroInfo()
    h.hname='a1'
    h.hgender=False
    h.hcomment='he is a boy'
    h.hbook=b
    h.save()
    

    图书与英雄是一对多的关系,django中提供了关联的操作方式。

    获得关联集合:返回当前book对象的所有hero。

    b.heroinfo_set.all()
  • 相关阅读:
    hdu 1301 prime算法
    hdu 4763 kmp算法
    linux上安装程序出现的问题汇总
    linux之下载工具wget
    python之os模块
    管道和xargs的区别
    linux下查找文件或目录(which,whereis,locate,find)
    blast+学习之search tools
    linux的文件,目录操作命令(mv,rm,cp)
    PHPCMS V9 简单的二次开发
  • 原文地址:https://www.cnblogs.com/fromlantianwei/p/10271205.html
Copyright © 2011-2022 走看看