简体   繁体   English

插入 flask SQLAlchemy 与关联表以多对多关系插入数据时出错

[英]Error while inseting flask SQLAlchemy Inserting Data in a Many-to-Many Relationship with Association Table

I have such database with relationship many2many我有这样的数据库,关系为many2many

association_table = db.Table('association',
                             db.Column('meal_id', db.Integer, db.ForeignKey('meals.id')),
                             db.Column('order_id', db.Integer, db.ForeignKey('orders.id'))
                             )

class Order(db.Model):
    __tablename__ = 'orders'
    id = db.Column(db.Integer, primary_key=True)
    data = db.Column(db.String)
    meals = db.relationship(
        "Meals", secondary=association_table, back_populates="orders"
    )
       
class Meals(db.Model):
    __tablename__ = 'meals'
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String, unique=True)
    price = db.Column(db.Float)
    orders = db.relationship(
        "Order", secondary=association_table, back_populates="meals"
    )

I try to insert data to table Order我尝试将数据插入表订单

order_to_database = Order (data='05_03_2021',
                           meals = 1
                           )

db.session.add(order_to_database)
db.session.commit()

meals is id of meals.膳食是膳食的标识。 I go th error:我 go 错误:

How should I solve this problem?我应该如何解决这个问题?

When using db.relationship ORM expects meals should be an Instance of Meals , not an integer.使用db.relationship时,ORM 期望meals应该是Meals实例,而不是 integer。

breakfast_meal = Meal(id=1,title='Lunch',price=9)

order_to_database = Order(data='05_03_2021')
order_to_database.meals.append(breakfast_meal)

db.session.add(order_to_database)

db.session.commit()

If you are using already existing meal from database you can do:如果您正在使用数据库中已有的餐点,您可以执行以下操作:

   lunch_meal = Meal.query.filter(Meal.id==10).first()
   ....
   order_to_database.meals.append(lunch_meal)
   ....
   db.session.commit()

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM