Flask-msearch python ,在多对多表上添加 msearch

Posted

技术标签:

【中文标题】Flask-msearch python ,在多对多表上添加 msearch【英文标题】:Flask-msearch python , adding msearch on many to many table 【发布时间】:2018-03-03 15:40:26 【问题描述】:

我正在使用 postgres 数据库处理 python,我有两个具有多对多关系的表和第三个保存关系的表,我需要在关系表上应用 flask-msearch 以获取和搜索两个表并给出结果输出,我已经在单个表上实现它在那里工作正常但不能在多对多关系中工作

这是我工作正常的模型

class JobpostJobpost(db.Model):
    __tablename__ = 'jobpost_jobpost'
    __searchable__ = ['company_name']  
    id = db.Column('job_id', Integer, primary_key=True)
    company_name = db.Column(String(255))

& 搜索我必须使用这个查询

JobpostJobpost.query.msearch(query,fields=['company_name'])

它给出了准确的结果,但是当我将它用于多表时,它在这里给出了错误,我的多表模型代码

类 TblDegreeSpecilizationRelation(db.Model): __tablename__ = 'tbl_degree_specilization_relation' __searchable__ = ['tbl_suggestion_degrees.name','tbl_suggestion_degrees.tags'] # ,'tbl_suggestion_degree_specilization.name' ,'tbl_suggestion_degree_specilization.tags' id = db.Column('id', Integer, nullable=False, primary_key=True) degree_id = db.Column('degree_id', ForeignKey(u'tbl_suggestion_degrees.id', ondelete=u'CASCADE')) specilization_id = db.Column('specilization_id', ForeignKey(u'tbl_suggestion_degree_specilization.id', ondelete=u'CASCADE'))

【问题讨论】:

我已经解决了这个问题,我在 Searchable 中添加了表名和 .columnname,我只是添加了 degree = relationship(u'TblSuggestionDegrees',backref=db.backref(' post', uselist=False), uselist=False) in 然后我在 searchable 中添加了 degree.name 和 degree.tags 并且它在正确的输出下正常工作。 【参考方案1】:

我已经解决了这个问题,我使用 tablename 和 .column name 我将其更改为, 型号

class TblDegreeSpecilizationRelation(db.Model):
__tablename__ = 'tbl_degree_specilization_relation'
__searchable__ = ['degree.name','degree.tags', 'specilization.name', 'specilization.tags'] # ,'tbl_suggestion_degree_specilization.name' ,'tbl_suggestion_degree_specilization.tags'

id = db.Column('id', Integer, nullable=False, primary_key=True)
degree_id = db.Column('degree_id', ForeignKey(u'tbl_suggestion_degrees.id', ondelete=u'CASCADE'))
specilization_id  = db.Column('specilization_id', ForeignKey(u'tbl_suggestion_degree_specilization.id', ondelete=u'CASCADE'))

degree = relationship(u'TblSuggestionDegrees',backref=db.backref(
        'post', uselist=False), uselist=False)
specilization = relationship(u'TblSuggestionDegreeSpecilization',backref=db.backref(
        'post', uselist=False), uselist=False)

现在一切正常

【讨论】:

以上是关于Flask-msearch python ,在多对多表上添加 msearch的主要内容,如果未能解决你的问题,请参考以下文章

在多对多关系中使用“And Where”

如何在多对多关系中更新日期

在多对多相关表中进行高效搜索

春季 JPA |在多对多关系中搜索

在多对多关系中命名表 laravel

Django:在多对多关系中交换元素