繁体   English   中英

查询多对多表 flask sqlalchemy

[英]query many to many table flask sqlalchemy

我想检查客户是否在 client_retailer 表中有这个零售商? 所以我需要 function 来查找此客户是否有零售商

client_retailer_table = db.Table('client_retailer',
    db.Column('client_id',  db.ForeignKey('client.id'), primary_key=True),
    db.Column('retailer_id', db.ForeignKey('retailer.id'), primary_key=True)
)

class ClientModel(db.Model):
__tablename__ = 'client'

    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(80))
    email = db.Column(db.String(80),unique=True,nullable=False)
    phone = db.Column(db.String(80))
    address = db.Column(db.String(80))
    
    retailers = db.relationship("RetailerModel",secondary=client_retailer_table, backref='retailers')

class RetailerModel(db.Model):
__tablename__ = 'retailer'

    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(80))
    email =db.Column(db.String(80),unique=True,nullable=False)
    phone = db.Column(db.String(80))
    address = db.Column(db.String(80))
    
    clients=db.relationship("ClientModel",secondary=client_retailer_table,back_populates="retailers")

我尝试查找此客户是否有使用此 function 的零售商

def find_by_retailer_id(id):
    return ClientModel.query.filter(ClientModel.retailers.any(retailer_id=id)).first()

但我收到此错误TypeError: Object of type set is not JSON serializable

我找到了将 json 方法添加到 model 的解决方案

    def json(self):
        return {'name': self.name, 'email': self.email,'phone': self.phone,'address': self.address}
    

# get all retailer
    def get(self):
        return {'retailers': list(map(lambda x: x.json(), ClientModel.find_by_retailer_id()))}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM