Python 如何在用户和他们进行的不同交易之间建立关系?
我正在使用SQLite在Flask上创建一个expense tracker应用程序,并尝试在交易和用户id之间创建一个关系,以便用户所做的每个交易都链接到该用户id,以便在他们完成新的交易表单时,将用户id传递到交易模型中的User_id列中 models.pyPython 如何在用户和他们进行的不同交易之间建立关系?,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
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')