Python 如何在用户和他们进行的不同交易之间建立关系?

Python 如何在用户和他们进行的不同交易之间建立关系?,python,html,sqlite,flask,Python,Html,Sqlite,Flask,我正在使用SQLite在Flask上创建一个expense tracker应用程序,并尝试在交易和用户id之间创建一个关系,以便用户所做的每个交易都链接到该用户id,以便在他们完成新的交易表单时,将用户id传递到交易模型中的User_id列中 models.py class User(db.Model, UserMixin): id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(2

我正在使用SQLite在Flask上创建一个expense tracker应用程序,并尝试在交易和用户id之间创建一个关系,以便用户所做的每个交易都链接到该用户id,以便在他们完成新的交易表单时,将用户id传递到交易模型中的User_id列中

models.py

class User(db.Model, UserMixin):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(20), unique=True, nullable=False)
    email = db.Column(db.String(120), unique=True, nullable=False)
    image_file = db.Column(db.String(20), nullable=False, default='default.jpg')
    password = db.Column(db.String(60), nullable=False)
    transactions = db.relationship('Transaction', backref='user', lazy=True)


    def __repr__(self):
        return f"User('{ self.username }', '{ self.email }', '{ self.image_file}')"


class Transaction(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(100), nullable=False)
    date_of_transaction = db.Column(db.DateTime, nullable=False, default=datetime.utcnow)
    amount = db.Column(db.Numeric(8,2), nullable=False)
    description = db.Column(db.Text, nullable=False, default="N/A")
    category = db.Column(db.String(30), nullable=False)
    company = db.Column(db.Text, nullable=False, default="N/A")
    user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False)


    def __repr__(self):
        return f"Transaction('{ self.title }', '{ self.date_of_transaction }', '{ self.amount}', '{self.category}','{self.company}','{self.user_id}')"
routes.py

@app.route('/transaction/new',  methods=['GET','POST'])
@login_required
def new_transaction():
    form = TransactionForm()
    if form.validate_on_submit():
        transaction = Transaction(title=form.title.data, description=form.description.data, amount=form.amount.data, category=form.category.data, company=form.company.data)
        db.session.add(transaction)
        db.session.add(transaction)
        db.session.commit()
        flash('Your post has been created!', 'success')
        return redirect(url_for('home'))
    return render_template('create_transaction.html', title='New Transaction', form=form)
forms.py

class TransactionForm(FlaskForm):
    title = StringField('Title', validators=[DataRequired()])
    description = TextAreaField('Description', validators=[DataRequired()])
    amount = IntegerField('Amount of Transaction: $', validators=[DataRequired()])
    category = TextAreaField('Category', validators=[DataRequired()])
    company = TextAreaField('Company', validators=[DataRequired()])
    submit = SubmitField('Post')