【发布时间】:2019-12-13 12:54:02
【问题描述】:
我已经定义了这些 SQLAlchemy 模型:
class Person(db.Model):
id = db.Column(db.Integer, primar_key=True)
pets = db.relationship("Pet", backref="person", lazy=True)
class Pet(db.Model):
id = db.Column(db.Integer, primar_key=True)
name = db.Column(db.String(120))
person = db.Column(db.Integer, db.ForeignKey("person.id"))
我正在尝试分配/覆盖 Person.pets 以供以后使用(但不更新 db 中的值)。
person_with_temporary_pet = {1: ["Max", "Charlie", "Cooper"], 2: ["Buddy", "Rocky", "Millo"]}
overwrited_person = []
for id, name in person_with_temporary_pet.items():
person = Person.query.get(id)
person.pets = name
overwrited_person.append(person)
这将导致AttributeError: 'str' object has no attribute '_sa_instance_state'
仅供参考,我想将 overwrited_person 转储到 Marshmallow 架构中:
class PersonSchema(ma.ModelSchema):
class Meta:
model = Person
person_schema = PersonSchema(many=True)
【问题讨论】:
标签: python flask sqlalchemy flask-sqlalchemy