写给两个连在一起的Flask一个苏的炼金术模型

2024-03-29 10:43:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我是flask的初学者,正在构建一个基于flask的web应用程序。 我正在使用flask sqlalchemy连接到我的sqlite数据库。你知道吗

当我从表单导入数据并将其写入数据库时,“Pear”模型中的“apple\u id”列中的每个条目都包含NULL。它应该有“苹果”入口的ID。其他数据如我所料。 两个表有一对多的关系,一个苹果可以被多个梨引用。你知道吗

为了便于分析,我简化了脚本。你知道吗

在型号.py地址:

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)

在视图.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)

Tags: namefromimportformidurlflaskapple
1条回答
网友
1楼 · 发布于 2024-03-29 10:43:45

如果需要表之间的关系,应该使用relationship来定义。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, ...)

相关问题 更多 >