मैं एक फ्लास्क फॉर्म में एक sqlalchemy अनुरोध के परिणामों से भरा एक चुनिंदा फ़ील्ड रखने की कोशिश कर रहा हूं।फ्लास्क में QuerySelectField का उपयोग कैसे करें?
def possible_book():
return Book.query.with_entities(Book.id).all()
class AuthorForm(Form):
familyname = TextField('familyname', [validators.Required()])
firstname = TextField('firstname', [validators.Required()])
book_list = QuerySelectField('book_list',query_factory=possible_book,get_label='title',allow_blank=True)
इस टेम्पलेट है:
यहाँ कोड हैं
<form action="" method="post" name="edit_author" enctype="multipart/form-data">
{{form.hidden_tag()}}
<p>Veuillez donner son prénom (obligatoire) : {{form.firstname(value=author.firstname)}}</p>
<p>Nom de famille (obligatoire) : {{form.familyname(value=author.familyname)}}</p>
<p>Livre : {{form.book_list}}</p>
<p><input type="submit" value="Envoyer"></p>
</form>
दृश्य:
@app.route('/edit_author/<number>', methods = ['GET', 'POST'])
def edit_author(number):
if number == 'new':
author = []
else:
author = Author.query.filter_by(id = number).first()
form = AuthorForm()
if form.validate_on_submit():
a = Author(firstname= form.firstname.data, familyname= form.familyname.data)
a.books = form.book_list.data
db.session.add(a)
db.session.commit()
return redirect('/admin')
return render_template('edit_author.html', form = form, author = author)
मॉडल (चिपकाया केवल साहचर्य की मेज और लेखक की मेज, अधिकांश कॉलम प्रश्न से बाहर हैं)
author_book = db.Table('author_book',
db.Column('author', db.Integer, db.ForeignKey('author.id')),
db.Column('book', db.Integer, db.ForeignKey('book.id'))
)
class Author(db.Model):
id = db.Column(db.Integer, primary_key = True)
firstname = db.Column(db.String(64), index = True)
familyname = db.Column(db.String(120), index = True)
website = db.Column(db.String(120))
dateofbirth = db.Column(db.DateTime)
placeofbirth = db.Column(db.String(120))
nationality = db.Column(db.String(120))
biography = db.Column(db.Text)
photo = db.Column(db.String(120))
books = db.relationship('Book', secondary=author_book,backref=db.backref('author', lazy='dynamic'))
मैं इस समय इस त्रुटि मिलती है:
UnmappedInstanceError: Class 'sqlalchemy.util._collections.KeyedTuple' is not mapped
क्या मैं वास्तव में चाहते हैं कि चुनिंदा क्षेत्र लेखक का नाम और उसका नंबर दिखाने के लिए, और (अनुप्रयोग के लिए लेखक संख्या लौट समारोह "add_author कहा जाता है " शीर्ष पर)।
धन्यवाद।
आप अपने possible_book() विधि का परीक्षण किया और सुनिश्चित रूप में इरादा है कि यह काम करता है है? – codegeek
मुझे नहीं पता कि "परीक्षण" से आपका क्या मतलब है। संभव_बुक सिर्फ एक प्रश्न है, और यह काम करता है, कोई समस्या नहीं है। यह सिर्फ पुस्तकों की पूरी सूची लौटाता है (या लेखक यदि आप दूसरी तरफ उपयोग करते हैं)। लेकिन मुझे पूरा यकीन है कि इसे फ़ॉर्म या टेम्पलेट या किसी अन्य चीज़ द्वारा व्याख्या करने के लिए कुछ और चाहिए। मुझे आश्चर्य है! यही वह नहीं है जो मुझे समझ में नहीं आता है: इसे फ़ॉर्म के साथ कैसे काम करना है? – 22decembre