gpt4 book ai didi

python-2.7 - 将关系设置为多对多关系

转载 作者:行者123 更新时间:2023-12-03 15:46:53 24 4
gpt4 key购买 nike

我有这种多对多关系可以正常工作。但是,现在我需要另一个与这种多对多相关的类。

currencies = db.Table('currencies_many',
db.Column('id', db.Integer, primary_key=True),
db.Column('currency_id', db.Integer, db.ForeignKey('currencies.id')),
db.Column('bank_id', db.Integer, db.ForeignKey('banks.id'))
)

class Bank(db.Model):
__tablename__ = 'banks'
id = db.Column(db.Integer, primary_key=True)
bank_name = db.Column(db.String(300))
currencies = db.relationship('Currency', secondary=currencies,
backref=db.backref('banks', lazy='dynamic'))

class Currency(db.Model):
__tablename__ = 'currencies'
id = db.Column(db.Integer, primary_key=True)
currency_name = db.Column(db.String(300))

我的意思是,例如,一个订单,我需要多对多的关联。
class Order(db.Model):
__tablename__ = 'orders'
id = db.Column(db.Integer, primary_key=True)
bank_currency_identification = db.Column(db.Integer, db.ForeignKey('currencies_many.id'))

我怎样才能做到这一点?在我的例子中,我没有 db.relationshipbank_currency_identification , 它是正确的?

最佳答案

所以如果我正确理解你的问题,你想引用 currencies_many来自您的表 orders table 。如果是这样,那么您与 currencies_many 的外键关系是正确的。 table 。

然而,当你想查询 orders 时,你可能会遇到一些麻烦。来自您的 banks table 。我建议,虽然看起来多余,但在 Order 之间建立一对多的关系。和 Bank以及在Order之间和 Currency .

bank_id = db.Column(db.Integer, db.ForeignKey('bank.id'))
currency_id = db.Column(db.Integer, db.ForeignKey('currency.id'))

然后在 Bank类(class)
orders = db.relationship('Order', backref='bank')

这为您提供了一个更清晰的查询界面。
bank_orders = bank.orders

以及使您的数据模型更清洁。不得不从也包含货币的中间表查询订单会很尴尬。只是我的两分钱,但是拥有一个易于理解的数据模型比建立尴尬的关系来节省一些冗余要好。

关于python-2.7 - 将关系设置为多对多关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32736446/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com