flask-sqlalchemyで1対多の関係を持つ新しいレコードを挿入する


Answers

場合によっては、 "リストオブジェクトに_sa_instance_state属性がありません"のような例外があります。

a = Address(email='foo@bar.com')
p = Person(name='foo', addresses=a)

この例外を解決する。

Question

私は1対多の関係に関するモデル宣言することについてフラスコ - sqlalchemyチュートリアルに従っています。 サンプルコードは次のとおりです。

class Person(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(50))
    addresses = db.relationship('Address', backref='person',
                                lazy='dynamic')

class Address(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    email = db.Column(db.String(50))
    person_id = db.Column(db.Integer, db.ForeignKey('person.id'))

今私はそのようなモデルを使用してDBに新しいレコードを挿入する方法を考えています。 私はコンストラクタinitが必要だと思っていますが、実装と使用方法を理解するのは難しいです。 私の主な問題は、PersonはAddressに依存し、AddressはPersonに対してForeignKeyを持っているため、事前にPersonについて知っておく必要があります。

それがどのように実行されるべきかを理解するのを手伝ってください。

前もって感謝します。