Python 从一个来源写入两个链接的炼金术模型
我是flask的初学者,正在构建一个基于flask的Web应用程序。 我正在使用flask sqlalchemy连接到我的sqlite数据库 当我从表单导入数据并将其写入数据库时,“Pear”模型中的“apple_id”列中的每个条目都包含NULL。它应该保存“苹果”条目的ID。其他数据按我的预期编写。 这两个表有一对多的关系,一个苹果可以被多个梨引用 我简化了脚本以便于分析 在models.py中:Python 从一个来源写入两个链接的炼金术模型,python,flask,flask-sqlalchemy,Python,Flask,Flask Sqlalchemy,我是flask的初学者,正在构建一个基于flask的Web应用程序。 我正在使用flask sqlalchemy连接到我的sqlite数据库 当我从表单导入数据并将其写入数据库时,“Pear”模型中的“apple_id”列中的每个条目都包含NULL。它应该保存“苹果”条目的ID。其他数据按我的预期编写。 这两个表有一对多的关系,一个苹果可以被多个梨引用 我简化了脚本以便于分析 在models.py中: from flask import current_app, request, url_for
from flask import current_app, request, url_for
from . import db
class Apple(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(64))
class Pear(db.Model):
id = db.Column(db.Integer, primary_key=True)
apple_id = db.Column(db.Integer, db.ForeignKey('cabinet.id'))
amount = db.Column(db.Integer)
In views.py
from . import edit
from flask import render_template, url_for, redirect, flash
from .forms import ApplePearForm
from ..models import Apple, Pear
from .. import db
@edit.route('/apples-and-pears', methods=['GET', 'POST'])
def apples_and_pears():
form = ApplePearForm()
if form.validate_on_submit():
apple = Apple(name=form.name.data)
db.session.add(apple)
pear = Pear(apple_id=apple.id, amount=4)
db.session.add(pear)
flash('fruit was added to database')
return redirect(url_for('browse.fruit_list'))
return render_template('edit/apples_and_pears.html', form=form)
如果需要表之间的关系,则应使用
关系
来定义backref
在两侧添加引用,这样您就可以执行此操作了pear=pear(apple=apple)
:
class Apple(db.Model):
...
pears = db.relationship('Pear', backref='apple')
class Pear(db.Model):
...
apple_id = db.Column(db.Integer, db.ForeignKey('cabinet.id')
#view
apple = Apple(...)
pear = Pear(apple=apple, ...)