Python 在保存时计算字段值?
我有一个模型,看起来像上面。我希望Python 在保存时计算字段值?,python,sqlalchemy,flask,flask-sqlalchemy,Python,Sqlalchemy,Flask,Flask Sqlalchemy,我有一个模型,看起来像上面。我希望最后一个字母成为内容的最后一个字母。我应该将此逻辑放置在何处,以便在每次保存模型时都会发生此逻辑?我正在阅读有关混合属性的内容,但我不确定哪种方法是正确的。1.简单的方法:可以使用sqlalchemy列default值设置如下内容: class Quote(db.Model): id = db.Column(db.Integer, primary_key=True) content = db.Column(db.Text) vot
最后一个字母
成为内容
的最后一个字母。我应该将此逻辑放置在何处,以便在每次保存模型时都会发生此逻辑?我正在阅读有关混合属性的内容,但我不确定哪种方法是正确的。1.简单的方法:可以使用sqlalchemy列default
值设置如下内容:
class Quote(db.Model):
id = db.Column(db.Integer, primary_key=True)
content = db.Column(db.Text)
votes = db.Column(db.Integer)
author_id = db.Column(db.Integer, db.ForeignKey('author.id'))
date_added = db.Column(db.DateTime,default=datetime.datetime.now())
last_letter = db.Column(db.String(1))
没有检查这是否真的有效,我猜不会
2.您还可以执行类似于将此init添加到类的操作:
last_letter = db.Column(db.char, default=content[len(content)-1:])
1.简单的方法:您可以使用sqlalchemy列
default
value设置如下内容:
class Quote(db.Model):
id = db.Column(db.Integer, primary_key=True)
content = db.Column(db.Text)
votes = db.Column(db.Integer)
author_id = db.Column(db.Integer, db.ForeignKey('author.id'))
date_added = db.Column(db.DateTime,default=datetime.datetime.now())
last_letter = db.Column(db.String(1))
没有检查这是否真的有效,我猜不会
2.您还可以执行类似于将此init添加到类的操作:
last_letter = db.Column(db.char, default=content[len(content)-1:])
最后一个字母可以用@property
修饰并定义
def __init__(self,id,content,votes,auther_id,date_added):
self.id = id
self.content = content
#yadda yadda etc
self.last_letter = content[len(content)-1:] #or something similiar
免责声明:我刚刚学会了如何使用装饰器,并且在任何地方都在使用装饰器
def __init__(self,id,content,votes,auther_id,date_added):
self.id = id
self.content = content
#yadda yadda etc
self.last_letter = content[len(content)-1:] #or something similiar
免责声明:我刚刚学会了如何使用装饰器,并且在任何地方都在使用它们,这不会将其保存在数据库中。。但是如果不需要数据库保存,这是一个很好的解决方案,它不会保存在数据库中。。但如果不需要节省数据库,这是一个很好的解决方案