我有一个sqlalchemy模型,我正在用flask whooshemmy搜索。我希望在搜索字段中包含一个方法的输出,但无法确定它是如何完成的,或者是否有可能。烧瓶呼啸炼金术的文档有点有限。在
我正在尝试这样的方法:
class Trade(db.Model):
__searchable__ = [
'species', 'nature', 'ability', 'move1', 'move2', 'move3', 'move4', 'ivSpread']
id = db.Column(db.Integer, primary_key=True)
user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
dex_no = db.Column(db.Integer)
species = db.Column(db.String(30))
male = db.Column(db.Boolean)
female = db.Column(db.Boolean)
nature = db.Column(db.String(30))
ability = db.Column(db.String(30))
iv_hp = db.Column(db.Integer)
iv_atk = db.Column(db.Integer)
iv_def = db.Column(db.Integer)
iv_spa = db.Column(db.Integer)
iv_spd = db.Column(db.Integer)
iv_spe = db.Column(db.Integer)
move1 = db.Column(db.String(30))
move2 = db.Column(db.String(30))
move3 = db.Column(db.String(30))
move4 = db.Column(db.String(30))
def ivSpread(self):
ivs = [
self.iv_hp,
self.iv_atk,
self.iv_def,
self.iv_spa,
self.iv_spd,
self.iv_spe
]
return "/".join(ivs)
def __repr__(self):
return '<Post %r: %r>' % (self.owner.nickname, self.species)
如果我能提供更多信息,请告诉我。使用替代模块的建议也很好,我相信会有比烧瓶呜呜炼金术更强大的东西。毕竟已经两年没推了。在
e:按原样使用上面的内容,再加上下面markhildreth提供的@property建议,我得到以下回溯。在
^{pr2}$
我对Woosh或Flask Wooshalchemy知之甚少,所以这可能是错误的,但我想你可能会做这样的事情。。。在
这使用了一个property使方法调用看起来像一个属性,所以不要做。。。 t=贸易(…) 打印t.ivSpread()
…你会。。。在
^{pr2}$这是必要的,因为Flask-WooshAlchemy似乎假定可搜索项是一个属性,而此时它只是在不调用方法的情况下拉取该方法。在
如果需要使用ivSpread stay方法,可以使用包装器:
然后您需要使
ivSpreadProp
可搜索,而不是ivSpread
。在编辑:
看来你要做的事情目前还不可能。参见here:
Flask whooshelchemy假设
__searchable__
属性中的项将是由模型使用SQLAlchemy定义的列。烧瓶呼啸炼金术需要让你干净地实现你的目标。在相关问题 更多 >
编程相关推荐