I try to use Flask, but I get sqlalchemy.exc.InterfaceError: <unprintable InterfaceError object> error when sending wtforms. Model class:
class Post(db.Model): __tablename__ = 'blog_posts' id = db.Column(db.Integer, unique=True, primary_key=True) title = db.Column(db.String(50), unique=False) content = db.Column(db.Text, unique=False) user_id = db.Column(db.String, db.ForeignKey('users.username')) @staticmethod def post_new_entry(title, content, user_id): """ Post new entry to database """ new_post = Post(title=title, content=content, user_id=user_id) db.session.add(new_post) db.session.commit() return new_post def __repr__(self): return 'PostID {}: {} by {}'.format(self.id, self.title, self.user_id)
For my form, I have the following:
class PostForm(Form): title = StringField('Title', validators=[DataRequired(), Length(10, 65)]) post_content = TextAreaField('Content', validators=[DataRequired(), Length(50, 500)]) submit = SubmitField('Publish Post')
Route:
@main.route('/new_post/', methods=['GET', 'POST']) @login_required def add_post(): form = PostForm() if form.validate_on_submit(): Post.post_new_entry(title=form.title.data, content=form.post_content.data, user_id=current_user) flash("Amazing stuff! Thanks for your submission.") return redirect(url_for('main.index')) return render_template('single.html', form=form)
In my html, I import the wtf.html bulb wtf.html page:
{{ wtf.quick_form(form) }}
The form shows correctly, but I get the above error when submitting the form. Any advice or ideas on how to proceed will be helpful.