python - sqlalchemy.exc.InterfaceError:<अनचाहे इंटरफ़ेस त्रुटि ऑब्जेक्ट>




flask flask-sqlalchemy (2)

आपकी तालिका वर्ग की परिभाषा में आपको विदेशी कुंजी रिश्ते को पूरा करने के लिए एक और पंक्ति जोड़नी होगी।

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'))

    # Setup the relationship to the User table
    users = db.relationship(User)

मुझे एक ऐप में एक ही त्रुटि संदेश था जो एक दिन काम कर रहा था, न कि अगला मुझे पागल कर दिया, समाधान था कि मैंने किसी रिश्ते को हटा दिया था () कहीं

मैं फ्लास्क की कोशिश कर रहा हूँ, लेकिन मुझे त्रुटि sqlalchemy.exc.InterfaceError: <unprintable InterfaceError object> त्रुटि sqlalchemy.exc.InterfaceError: <unprintable InterfaceError object> एक wtforms सबमिट करते समय मॉडल वर्ग है:

 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)

मेरे फॉर्म के लिए, मेरे पास निम्न है:

class PostForm(Form):
title = StringField('Title', validators=[DataRequired(), Length(10, 65)])
post_content = TextAreaField('Content', validators=[DataRequired(), Length(50, 500)])
submit = SubmitField('Publish Post')

मार्ग है:

@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)

मेरे html पर, मैं फ्लास्क-बूटस्ट्रैप के wtf.html आयात कर रहा हूं:

{{ wtf.quick_form(form) }} 

प्रपत्र सही दिखाता है लेकिन मुझे फ़ॉर्म सबमिशन में उपरोक्त त्रुटि मिलती है। आगे बढ़ने के बारे में कोई टिप या विचार मददगार होगा

धन्यवाद


def add_post() अंतर्गत आप user_id=current_user लिखते हैं, लेकिन यह सही नहीं है।

चूंकि आपने class Post लिए परिभाषित किया है:

user_id = db.Column(db.String, db.ForeignKey('users.username'))

def add_post() आपको user_id=current_user.username उपयोग user_id=current_user.username चाहिए





flask-wtforms