Как избавиться от этой ошибки sqlalchemy.exc.ArgumentError

#python #sqlalchemy

#python #sqlalchemy

Вопрос:

Здравствуйте, я хотел бы знать, как избавиться от этой ошибки. Вот мои мои таблицы

 @login_menager.user_loader
def load_user(user_id):
    return User.query.get(int(user_id))

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)
    posts = db.relationship('Post', backref='author', lazy=True)
    user_comments = db.relationship('Comment', backref='author_comment', lazy=True)

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

class Comment(db.Model):
    id = db.Column(db.Integer, primary_key = True)
    body = db.Column(db.Text)
    timestamp = db.Column(db.DateTime, nullable=False, default=datetime.utcnow)
    #post_id = db.Column(db.Integer, db.ForeignKey('post.id'), nullable=False)
    comment_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False)

    def __repr__(self):
        return f"Comment('{self.body}')"
 

Когда я добавляю эти строки:

 if comment_form.validate_on_submit():
    reply = Comment(body=comment_form.comment_on_form.data, author_comment=current_user)
    db.session.add(reply)
    db.session.commit()
    
replies = Comment.query.filter_by(author_comment=current_user).order_by(Comment.timestamp.desc()).all()
return render_template('home.html', posts=posts, title='Home', form=form, comment_form=comment_form, replies=replies) 
 

Я получаю эту ошибку:

 sqlalchemy.exc.ArgumentError: Mapped instance expected 
for relationship comparison to object.
Classes, queries and other SQL elements are not accepted in this context; 
for comparison with a subquery, use Comment.author_comment.has(**criteria).
 

С обратным отслеживанием:
https://raw.githubusercontent.com/RealdoBeja98/endi-s_project/main/README.md

Я был бы признателен за любую помощь. Спасибо

Комментарии:

1. Сработало. Я только добавил @login_required, и это сработало. Но причина, почему … до сих пор я не понимаю.