Я получаю приведенную ниже ошибку при попытке добавить ингредиент на страницу своей учетной записи (которая включает только форму AddToPantry - одно поле, имя_ ингредиента)
sqlalchemy.exc.OperationalError
sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) table ingredient has no column named user_id [SQL: 'INSERT INTO ingredient (ingredient_name, user_id) VALUES (?, ?)'] [parameters: ('bread', 1)] (Background on this error at: http://sqlalche.me/e/e3q8)
Вот мои модели:
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)
password = db.Column(db.String(60), nullable=False)
recipes = db.relationship('Recipe', backref='user', lazy=True)
pantry_items = db.relationship('Ingredient', backref='user', lazy=True)
# meal_plans = db.relationship('Meal Plan', backref='user', lazy='dynamic')
def __repr__(self):
return f"User('{self.username}', '{self.email})"
class Recipe(db.Model):
id = db.Column(db.Integer, primary_key=True)
spoonacular_id = db.Column(db.Integer)
user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False)
def __repr__(self):
return f"Recipe('{self.spoonacular_id}')"
class Ingredient(db.Model):
id = db.Column(db.Integer, primary_key=True)
ingredient_name = db.Column(db.String(40), nullable=False)
user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False)
def __repr__(self):
return f"Recipe('{self.ingredient_name}')"
А это мой маршрут для страницы учетной записи, куда загружается форма:
@app.route("/account", methods=['GET', 'POST'])
@login_required
def account():
form = AddToPantry()
if form.validate_on_submit():
ingredient = Ingredient(ingredient_name=form.ingredient_name.data, user=current_user)
db.session.add(ingredient)
db.session.commit()
return render_template('account.html', title='Account', form=form)