【发布时间】:2022-01-22 13:42:48
【问题描述】:
在数据库关系方面需要帮助。 我有两张表:资金来源和分配摘要,两者之间有4个属性相同。我使用外键是因为两个表之间存在一对多关系 - 一个资金来源可以有多个分配,但一个分配只能有一个资金来源:
这是我的两张桌子:
class FundingSource(db.Model):
id = db.Column(db.Integer, primary_key=True)
complete = db.Column(db.String(10), default=False, nullable=False)
department = db.Column(db.String(100), nullable=False)
agency = db.Column(db.String(150), nullable=False)
funding_source = db.Column(db.String(200), nullable=False)
bill = db.Column(db.String(10), nullable=False)
tracker = db.Column(db.String(255), nullable=False)
allocations = db.relationship('AllocationSummary', backref='allocation', lazy=True)
class AllocationSummary(db.Model):
id = db.Column(db.Integer, primary_key=True)
# complete
# agency
# funding_source
# bill
state = db.Column(db.String(100), nullable=False)
recipient = db.Column(db.String(200), nullable=False)
amount = db.Column(db.Float(), nullable=False)
funding_source_id = db.Column(db.Integer, db.ForeignKey('funding_source.id'), nullable=False)
def __init__(self, state, eligible_applicant, recipient, amount):
self.state = state
self.eligible_applicant = eligible_applicant
self.recipient = recipient
self.amount = amount
在我的分配摘要网页中,我有一个插入新分配的按钮,要求您填写表格字段。
这是我插入带有所需表单字段的新分配的代码:
@main.route("/insert", methods=['POST'])
def insert():
if request.method == 'POST':
complete = request.form['complete']
agency = request.form['agency']
funding_source = request.form['funding_source']
bill = request.form['bill']
state = request.form['state']
eligible_applicant = request.form['eligible_applicant']
recipient = request.form['recipient']
amount = request.form['amount']
my_alloc = AllocationSummary(state, eligible_applicant, recipient, amount)
db.session.add(my_alloc)
db.session.commit()
return redirect(url_for('alloc_summ'))
我的问题是,如果我需要 FundingSource 表中的这些属性,如何将属性“完整”、“代理”、“funding_source”和“bill”包含到 AllocationSummary() 并添加/提交到数据库?
我想我不明白“funding_source_id = db.Column(db.Integer, db.ForeignKey('funding_source.id'), nullable=False)” 是为了获得共同属性?
基本上,我需要:
my_alloc = AllocationSummary(complete, agency, funding_source, bill, state, qualified_applicant, 收件人, amount )
但我无法访问这些属性,因为它们在 FundingSource 表中,那么如何在插入时将它们推送到数据库?
对不起,如果所有这些都令人困惑,我是新手。
【问题讨论】:
标签: python database flask foreign-keys