2017-08-01 195 views
0

我正在使用flask-appbuilder構建應用程序,並且我有一個操作可以運行一個函數,並且我想要使用輸出更新表中的行功能。無法解決如何做到這一點。任何幫助?謝謝如何從Flask-appbuilder和SQLAInterface中的操作更新數據庫行

@action("prospect", "Prospect", "off we go", "fa-rocket") 
def prospect(self, items): 
    if isinstance(items, list): 
     for a in items: 
      out = self.myfunction(a.name) 
      #Need to update the table with output 
      #anyideas? 
     self.update_redirect() 
    else: 
     print "nothing" 
    return redirect(self.get_redirect()) 

回答

1

我假設這是一個與模型相關的視圖。如果是這種情況,可以使用Flask-AppBuilder SQLAInterface類將模型與視圖相關聯。 該類允許您與數據庫中的項目進行交互。

這個類有一個'編輯'方法,讓你更新項目。

比方說,你的模式是類似下面:

class Contact(Model): 
    id = Column(Integer, primary_key=True) 
    name = Column(String(50), unique = True, nullable=False) 

比方說,你想要實現capiltalizes聯繫人姓名的行動,並希望能夠做到這一點的「列出」和'顯示'的意見。這是一種方法:

class ContactView(ModelView): 
    datamodel = SQLAInterface(Contact) 

    @action("capitalize", 
      "Capitalize name", 
      "Do you really want to capitalize the name?") 
    def capitalize(self, contacts): 
     if isinstance(contacts, list): 
      for contact in contacts: 
       contact.name = contact.name.capitalize() 
       self.datamodel.edit(contact) 
       self.update_redirect() 
     else: 
      contacts.name = contacts.name.capitalize() 
      self.datamodel.edit(contacts) 
     return redirect(self.get_redirect()) 

您可以檢查其他SQLAInterface方法here

+0

self.datamodel.edit(contact)做到了。謝謝! – RHSMan

+0

就像一個快速的,當添加一個新的聯繫人條目時如何構建add函數期望的項目?我可以創建一個新的問題 – RHSMan