返回两个串联的SqlAlchemy列

Bin*_*ist 5 python sqlalchemy flask-sqlalchemy

我正在使用FlaskSQLAlchemy。我有一个Person模型,我想要一个属性,该属性返回Person的全名(名字+姓氏)。

我尝试使用@declared_attr,但输出:

"person.first_name || :param_1 || person.last_name"
Run Code Online (Sandbox Code Playgroud)

这是我的代码:

"person.first_name || :param_1 || person.last_name"
Run Code Online (Sandbox Code Playgroud)

dav*_*ism 6

使用混合扩展:

from sqlalchemy.ext.hybrid import hybrid_property

class Person(Base):
    # ...
    @hybrid_property
    def name(self):
        return '{0} {1}'.format(self.first_name, self.last_name)

    @name.setter
    def name(self, value):
        self.first_name, self.last_name = value.split(' ', 1)

    @name.expression
    def name(cls):
        return db.func.concat(cls.first_name, ' ', cls.last_name)
Run Code Online (Sandbox Code Playgroud)


Ale*_*lex 6

@davidism 建议使用混合扩展,而我说,为什么不使用 SQLAlchemy 的column_property函数

例子:

class User(Base):
    __tablename__ = 'user'
    id = Column(Integer, primary_key=True)
    firstname = Column(String(50))
    lastname = Column(String(50))
    fullname = column_property(firstname + " " + lastname)
Run Code Online (Sandbox Code Playgroud)