SOの新機能で、私の質問が関連し、ルールに適合することを願っています。Flaskに複数のエンティティを含むフォームを作成するにはどうすればよいですか?
私はpythonマイクロフレームワークのFlaskを試しています。ここまでは順調ですね。
チュック:
from app import db
from sqlalchemy.orm import relationship
from sqlalchemy import Table, Column, Integer, ForeignKey
import TrucAttribute
class Truc(db.Model):
__tablename__ = 'app_truc'
id = db.Column(db.Integer, prymary_key = True)
owned_attributs_de_truc = db.relationship('TrucAttribute', backref="truc", cascade="all, delete-orphan", lazy="dynamic")
# Truc business methods ...
TrucAttribute:
from app import db
from sqlalchemy.orm import relationship
from sqlalchemy import Table, Column, Integer, ForeignKey
import Truc
class TrucAttribute(db.Model):
id = db.Column(db.Integer, primary_key=True)
truc_id = db.Column(db.Integer, db.ForeignKey('app_truc.id'))
truc_owner = relationship("Truc", backref="attributs_de_truc")
@staticmethod #return a list usable for forms
def form_list():
attributs = TrucAttributes.query.all()
attributs_list = []
for attribut in attributs:
attributs_list.append((unicode(attribut.id), unicode(attribut.name))
return attributs_list
forms.py:作成から
from flask_wtf import Form
from wtforms import SelectField
from app.models.trucAttributes import TrucAttribute
class CreateTrucForm(Form):
truc_attribute = SelectField(u'Truc Attribute', choices=TrucAttribute.form_list())
コード以下のように2つのエンティティ(多くのTrucAttribute 1つチュック)を考えます。 html:
Truc Attribute :
{{ form.truc_attribute() }}
とコントローラ:私はTrucAttributeの選択リストでチュック作成フォームを作成するにはどうすればよい
@app.route('/create/truc', methods=['GET', 'POST'])
def createTruc():
form = CreateTrucForm()
return render_template('create/CreateTruc.html', form=form)
?これまでは、Flask Mega Tutorialに基づいた非常に単純なフォームしか作成していませんでした。
ありがとうございます!
フォームを作成するコードも投稿できますか?これはSelectFieldで行うことができますが、テンプレートをレンダリングする前にリストに値を設定する必要があります。あなたが現在持っているものを分かち合うことができれば、選択リストがうまくいかない場合、あなたを助けるのがより簡単になります。 – Hannu
私は上に想像したソリューションを追加しました。それは正しい方法ですか? –
それはよく見えます。あなたがそれを実行するとどうなりますか?私は整数であるため、attribut_idをunicodingしないで、そのように扱い、attributs_list.append((attribut.id、unicode(attribut.name))とすることができます。あなたのtruc_attributeにはエントリがありますか?あなたのフィールド?静的メソッドのreturnステートメントの直前に "print attributs_list"を追加すると、何が起きますか?コードが実行されますか?出力は正常に見えますか? – Hannu