基于python Django电子商城(3)-- django模型(数据库)创建

django采用ORM(对象关系)映射:
如下图:
基于python Django电子商城(3)-- django模型(数据库)创建
我们可以在models.py文件里面创建我们的商品数据模型,生成对应的数据表
数据库既然是存放数据,那么数据就有类型,下面是常用的数据属性:
models.AutoField   #自增列 = int(11)
models.CharField   #字符串字段,必须设置max_length参数
models.BooleanField    #布尔类型
models.ComaSeparatedIntegerField  #用逗号分割的数字,varchar必须设置 max_lenght 参数
models.DateField #日期类型 date
models.DateTimeField   #日期时间类型 datetime
models.Decimal   #十进制小数类型 = decimal
models.EmailField   #一个带有检查 Email 合法性的 CharField
models.FloatField   #浮点类型 = double
models.IntegerField   #整形
models.GenericIPAddressField   #一个带有检查 IP地址合法性的CharField
models.NullBooleanField   #允许为空的布尔类型
models.PositiveIntegerFiel   #正整数
models.TextField   #文本,默认对应的form标签是textarea。
models.TimeField   #时间 HH:MM[:ss[.uuuuuu]]
models.URLField   #一个带有URL合法性校验的CharField。
models.BinaryField   #二进制,存储二进制数据。不能使用filter函数获得QuerySet。models.ImageField #图在这里插入代码片

一、创建生成我们的数据库
1.在app目录下中的models.py 中创建我们的数据模型,我们数据模型,暂且根据订单–商品的关系生成,一个订单可以有多个商品,一个商品可以属于一个订单,代码如下:

from django.db import models

# Create your models here.创建数据模型
class COrder(models.Model): #订单
    cUser = models.CharField(max_length=100)    #用户名
    fPrice = models.FloatField()                #订单价格
    dDate = models.DateTimeField()              #订单日期时间

class CCusInfo(models.Model):
    name=models.CharField(max_length=100)           #商品名称
    order=models.ForeignKey(COrder,models.CASCADE)  #所属订单

2.然后在powershell中运行命令,生成我们的数据库:
使用命令生成迁移文件:
python.exe .\manage.py makemigrations
3.使用命令生成数据库:
python.exe .\manage.py migrate
如下图,说明生成成功
基于python Django电子商城(3)-- django模型(数据库)创建
成功后可以在我们的工程目录下看到数据库:
基于python Django电子商城(3)-- django模型(数据库)创建
二、数据库操作:
我们知道数据库最基础的4个基本操作是:增,删,查,改
通过执行:
python.exe .\manage.py shell
进入python shell下然后开始我们的增删查改操作
代码如下:
增加数据:

>>> from testapp.models import COrder
>>> o=COrder
>>> o=COrder()
>>> o.fPrice=1.1
>>> o.cUser='t'
>>> o.save()	#保存新增数据

查询数据:

>>> COrder.objects.all()
<QuerySet [<COrder: t>]>	#可以看到数据数据增加了

修改数据:

>>> o.cUser='Marry'
>>> o.save()	#更新数据到数据库
>>> COrder.objects.all()
<QuerySet [<COrder: Marry>,	#再次查询可以看到名字已经被修改了

删除数据:

>>> COrder.objects.all()
<QuerySet [<COrder: Marry>]>	#删除前,用户为marry
>>> o.delete()
(1, {'testapp.COrder': 1})
>>> COrder.objects.all()
<QuerySet []>	#删除后,数据为空
上一篇:9 Django 模型层(2)


下一篇:模型字段