2016-10-02 84 views
0

我正在使用Sqlalchemy和PostgreSQL。在我的模型中,我有一個Product和一個Image。我希望每個產品都有多個圖像。這是產品提交方法:從交易模塊獲取交易結果

def submit_product(self, **kwargs): 

    product = Product(
     title=kwargs['title'], 
     sub_category_id=kwargs['sub_category_id'], 
     year_of_production=kwargs['year_of_production'], 
     country_of_production=kwargs['country_of_production'], 
     quantity=kwargs['quantity'], 
     price=kwargs['price'], 
     account_id=session.get('account_id', None) 
     ) 


    DBSession.add(product) 
    transaction.commit() 

    for image in kwargs['images']: 
     image = Image(
      product_id= # what should I put here?, 
      image=image.file.read() 
     ) 
     DBSession.add(image) 
    transaction.commit() 

在我將圖像添加到數據庫的最後部分。我需要product_id來設置圖像。但我沒有找到辦法。有沒有辦法從交易中獲得結果,以便我可以找出新產品分配的ID? DBSession.add()transaction.commit()都返回None

回答

1

使用後:

transaction.commit() 

可以使用product.id,因爲更改已COMMITED。所以產品現在它的ID:

for image in kwargs['images']: 
    image = Image(
     product_id=product.id, # what should I put here?, 
     image=image.file.read() 
    ) 
    DBSession.add(image) 
+0

爲什麼我沒有爲上帝的緣故嘗試這個? :D tnx :) – Juggernaut

+0

也許只是因爲在使用其他ORM時通過提交獲取了此值。沒問題。 ;) – turkus

+0

@AminEtesamian你爲什麼拒絕批准? – turkus

1

,關鍵是要DBSession.flush()添加圖像,從而使加入將完成並product.id將可以訪問後。