当查询为all()的时候,如何动态添加self.fields 的值?

来源:7-6 序列化SQLAlchemy模型

慕斯0994087

2019-05-16

老师重写了数据库的base~里面巧妙的运用 了append,来动态添加序列化fields的值。我的疑问是,这在查询frist(),一个对象的时候可以使用,那all()出来的 对象,要如何前置去动态修改fields呢?
需求是,我有一个答题程序,在第一次获取题目的时候,不返回正确值,在确认后,返回这个题目的正确值

写回答

2回答

慕斯0994087

提问者

2019-05-17

class Base(db.Model):

   __abstract__ = True

   def __getitem__(self, item):
       return getattr(self, item)

   def set_attrs(self, attrs_dict):
       for value in attrs_dict:
           if hasattr(self, value.name) and value.name != 'id':
               setattr(self, value.name, value.data)

   def delete(self):
       self.status = 0

   def keys(self):
       return self.fields

   def hide(self, *keys):
       for key in keys:
           self.fields.remove(key)
       return self

   def append(self, *keys):
       for key in keys:
           self.fields.append(key)
       return self




=============================

from common.libs.basic.Database import db, Base
from flask_sqlalchemy import orm
from common.libs.basic.Helper import getCurrentDate, getId, getMinutesDate


class PapersModel(Base):
   __tablename__ = 'papers'

   id = db.Column(db.Integer, primary_key=True)
   name = db.Column(db.String(32), nullable=False, comment='试卷名称')
   limited_time = db.Column(db.Integer, nullable=True, default=0, comment='限时')

   status = db.Column(db.Integer, nullable=True, default=1)
   created_time = db.Column(db.DateTime, nullable=False, default=getCurrentDate, comment='请求时间')

   # questions = db.relationship("Questions")
   questions_types = db.relationship("QuestionsTypesModel")

   @orm.reconstructor
   def __init__(self):
       self.fields = ['id', 'name', 'questions_types']

   @staticmethod
   def ops_add(form):
       pass


=========================

   @orm.reconstructor
   def __init__(self):
       self.fields = ['id', 'name', 'questions_types']

 这个在查询单对象的 时候,通过,base.append() 序列化字段。

查询全部的时候怎么办呢,不能循环一遍,一个个加吧~~


0
1
7七月
这个我看了下,好像还真得循环做一遍。如果不想循环,那么我觉得可以在类上面提供一个静态的方法,在类里面循环,这样外面就不用循环了。
2019-05-17
共1条回复

7七月

2019-05-16

我忘记代码了,可否贴一下代码看看?

0
0

Python Flask高级编程之RESTFul API前后端分离精讲

RESTFul+权限管理+token令牌+扩展flask=提升编程思维

2037 学习 · 359 问题

查看课程