首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >需要模型字段具有特定约定的烧瓶扩展

需要模型字段具有特定约定的烧瓶扩展
EN

Stack Overflow用户
提问于 2018-04-13 11:34:56
回答 2查看 317关注 0票数 1

所以我正在用水瓶开发一个网络应用程序。在我的数据模型中,我遵循了一个命名约定,但是这个约定似乎不能很好地集成到用于特定字段命名(例如来自瓶-安全扩展的)的扩展中。

模型 烧瓶-安全性假设您将使用SQLAlchemy、MongoEngine、Peewee或PonyORM等库来定义包含用户和角色模型的数据模型。您的模型上的字段必须遵循特定的约定,这取决于应用程序需要的功能。除此之外,如果您愿意,您可以向模型中添加任何附加字段。至少您的用户和角色模型应该包括以下字段: 用户 id电子邮件密码活动

现在假设我的用户模型如下所示:

代码语言:javascript
复制
class User(UserMixin, db.Model):
    '''This model represents all types of Users registered'''

    __tablename__ = 'users'


    user_id            = db.Column(db.Integer, primary_key=True)
    user_email         = db.Column(db.String(64), unique=True, index=True)
    user_password_hash = db.Column(db.String(128))

如果我必须将我的模型字段更改为烧瓶扩展所需的内容,这就要求我修改很多文件,这是一项繁琐的工作。

我想到的是这样的:

代码语言:javascript
复制
class User(UserMixin, db.Model):
    '''This model represents all types of Users registered'''

    __tablename__ = 'users'


    user_id            = db.Column(db.Integer, primary_key=True)
    id                 = self.user_id #For Flask-Extensions

    user_email         = db.Column(db.String(64), unique=True, index=True)
    email              = self.user_email #For Flask-Extensions

    user_password_hash = db.Column(db.String(128))
    password           = self.user_password_hash #For Flask-Extensions

这个解决方案有多糟糕,我有什么选择?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-04-14 10:11:51

我想你可以使用同义词

我没查但我觉得这应该能行。

代码语言:javascript
复制
from sqlalchemy.orm import synonym


class User(UserMixin, db.Model):
    __tablename__ = 'users'

    user_id            = db.Column(db.Integer, primary_key=True)
    id                 = synonym('user_id')

    user_email         = db.Column(db.String(64), unique=True, index=True)
    email              = synonym('user_email')

    user_password_hash = db.Column(db.String(128))
    password           = synonym('user_password_hash')
票数 2
EN

Stack Overflow用户

发布于 2018-04-13 14:49:03

这或多或少是可行的,也是我做过的事。我建议使用一个属性来实现它:

代码语言:javascript
复制
@property
def id(self):
    return self.user_id

如果Flask也需要在类级别上访问该属性,则可以使用SQLAlchemy的hybrid_property

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49816063

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档