表格模型类字段属性

Django创建模型类,表格字段属性

导入models

1
2
3
# django要导入models
from django.db import models
# 创建模型类要继承models.Mode

Django自带一个user模型类,创建user模型类的时候可以继承django的

1
2
from django.contrib.auth.models import AbstractUser
class User(AbstractUser):

之后就可以在这个类下面自定添加新的字段属性。

创建模型类

在models.py文件中,编写如下代码:
例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

class 类名(models.Model):
字段一 = models.CharField(max_length=20, verbose_name='名称')
日期 = models.DateField(verbose_name='日期')
数字类型= models.IntegerField(default=0, verbose_name='整型')
is_delete = models.BooleanField(default=False, verbose_name='逻辑删除')

class Meta:
db_table = '表名' # 指明数据库表名
verbose_name = '名称' # 在admin站点中显示的名称
verbose_name_plural = verbose_name # 显示的复数名称

def __str__(self):
"""定义每个数据对象的显示信息"""
return self.字段一

如示例所示即可创建一个模型类

字段属性

1) 数据库表名

模型类如果未指明表名,Django默认以 小写app应用名_小写模型类名 为数据库表名。

可通过db_table 指明数据库表名。

2) 关于主键

django会为表创建自动增长的主键列,每个模型只能有一个主键列,如果使用选项设置某属性为主键列后django不会再创建自动增长的主键列。

默认创建的主键列属性为id,可以使用pk代替,pk全拼为primary key。

3) 属性命名限制

不能是python的保留关键字。
不允许使用连续的下划线,这是由django的查询方式决定的。
定义属性时需要指定字段类型,通过字段类型的参数指定选项,语法如下:

属性=models.字段类型(选项)

4) 外键

在设置外键时,需要通过on_delete选项指明主表删除数据时,对于外键引用表数据如何处理,在django.db.models中包含了可选常量:

CASCADE 级联,删除主表数据时连通一起删除外键表中数据

PROTECT 保护,通过抛出ProtectedError异常,来阻止删除主表中被外键应用的数据

SET_NULL 设置为NULL,仅在该字段null=True允许为null时可用

SET_DEFAULT 设置为默认值,仅在该字段设置了默认值时可用

SET() 设置为特定值或者调用特定方法,如

1
2
3
4
5
6
7
8
9
10
11
12
from django.conf import settings
from django.contrib.auth import get_user_model
from django.db import models

def get_sentinel_user():
return get_user_model().objects.get_or_create(username='deleted')[0]

class MyModel(models.Model):
user = models.ForeignKey(
settings.AUTH_USER_MODEL,
on_delete=models.SET(get_sentinel_user),
)

DO_NOTHING 不做任何操作,如果数据库前置指明级联性,此选项会抛出IntegrityError异常。

5) 字段类型
1
6) 选项
2

Flask创建模型类,表格字段属性

数据库连接

连接数据库需要安装pymysql和flask-sqlalchemy

1
2
pip install Flask-MySQLdb==0.2.0
pip install Flask-SQLAlchemy==2.3.2

然后进行设置,数据库使用url指定

1
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:mysql@localhost:3306/数据库名'

然后在mysql创建你要连接的数据库
其他配置
3

定义模型类

定义模型类

1
2
3
4
5
class 类名(db.Model):
属性1=db.Column(类型,约束)
属性2=db.Column(类型,约束)
属性3=db.Column(类型,约束)
...

创建表

1
db.create_all()

字段属性和选项

常用的SQLAlchemy字段类型
4
常用的SQLAlchemy列选项
5
常用的SQLAlchemy关系选项
6

SKU与SPU

SPU = Standard Product Unit (标准产品单位)

SPU是商品信息聚合的最小单位,是一组可服用、易检索的标准化信息的集合,该集合描述了一个产品的特性。

个人理解,属性值特性类似相同,可归为一起的商品类就是spu

SKU = Stock Keeping Unit (库存量单位)

SKU即库存进出计量的单位,可以是以件、盒、托盘等为单位,是物理上不可分割的最小存货单元。在使用时要根据不同业态,不同管理模式来处理。在服装、鞋类商品中使用最多最普遍。

个人理解,有具体属性值,具体规格的商品就是sku