增加自动序列化(根据orm模型)方法,增加软(逻辑)删除
This commit is contained in:
@@ -1,6 +1,47 @@
|
|||||||
|
import datetime
|
||||||
|
|
||||||
|
from marshmallow import Schema
|
||||||
|
from marshmallow_sqlalchemy import SQLAlchemyAutoSchema
|
||||||
|
|
||||||
from applications.extensions import db, ma
|
from applications.extensions import db, ma
|
||||||
|
|
||||||
|
|
||||||
|
class LogicalDeleteMixin(object):
|
||||||
|
"""
|
||||||
|
class Test(db.Model,LogicalDeleteMixin):
|
||||||
|
__tablename__ = 'admin_test'
|
||||||
|
id = db.Column(db.Integer, primary_key=True, comment='角色ID')
|
||||||
|
|
||||||
|
Test.query.filter_by(id=1).soft_delete()
|
||||||
|
Test.query.logic_all()
|
||||||
|
"""
|
||||||
|
create_at = db.Column(db.DateTime, default=datetime.datetime.now, comment='创建时间')
|
||||||
|
update_at = db.Column(db.DateTime, default=datetime.datetime.now, onupdate=datetime.datetime.now, comment='创建时间')
|
||||||
|
delete_at = db.Column(db.DateTime, comment='删除时间')
|
||||||
|
|
||||||
|
|
||||||
|
def auto_model_jsonify(data, model: db.Model):
|
||||||
|
"""
|
||||||
|
不需要建立schemas,直接使用orm的定义模型进行序列化
|
||||||
|
基本功能,待完善
|
||||||
|
示例
|
||||||
|
power_data = curd.auto_model_jsonify(model=Dept, data=dept)
|
||||||
|
"""
|
||||||
|
def get_model():
|
||||||
|
return model
|
||||||
|
|
||||||
|
class AutoSchema(SQLAlchemyAutoSchema):
|
||||||
|
class Meta(Schema):
|
||||||
|
model = get_model()
|
||||||
|
include_fk = True
|
||||||
|
include_relationships = True
|
||||||
|
load_instance = True
|
||||||
|
|
||||||
|
common_schema = AutoSchema(many=True) # 用已继承ma.ModelSchema类的自定制类生成序列化类
|
||||||
|
output = common_schema.dump(data)
|
||||||
|
return output
|
||||||
|
|
||||||
|
|
||||||
def model_to_dicts(schema: ma.Schema, data):
|
def model_to_dicts(schema: ma.Schema, data):
|
||||||
"""
|
"""
|
||||||
:param schema: schema类
|
:param schema: schema类
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
import datetime
|
||||||
|
|
||||||
from flask import Flask, request
|
from flask import Flask, request
|
||||||
from flask_sqlalchemy import SQLAlchemy, BaseQuery
|
from flask_sqlalchemy import SQLAlchemy, BaseQuery
|
||||||
from flask_marshmallow import Marshmallow
|
from flask_marshmallow import Marshmallow
|
||||||
@@ -47,6 +49,12 @@ fields.Boolean.default_error_messages = {
|
|||||||
|
|
||||||
|
|
||||||
class Query(BaseQuery):
|
class Query(BaseQuery):
|
||||||
|
def soft_delete(self):
|
||||||
|
return self.update({"delete_at": datetime.datetime.now()})
|
||||||
|
|
||||||
|
def logic_all(self):
|
||||||
|
return self.filter_by(delete_at=None).all()
|
||||||
|
|
||||||
def layui_paginate(self):
|
def layui_paginate(self):
|
||||||
"""
|
"""
|
||||||
layui表格分页
|
layui表格分页
|
||||||
|
|||||||
Reference in New Issue
Block a user