2017-08-01 1 views
0

Ich baue eine App mit Flask-Appbuilder und ich habe eine Aktion, die eine Funktion ausführt und ich möchte die Zeile in der Tabelle mit der Ausgabe von aktualisieren Funktion. Kann nicht herausfinden, wie es geht. Irgendeine Hilfe? DankeWie man eine DB-Zeile von einer Aktion in Flask-Appbuilder und SQLAInterface aktualisiert

@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()) 

Antwort

1

Ich nehme an, das ist eine Ansicht, die zu einem Modell verwandt ist. Wenn dies der Fall ist, verknüpfen Sie das Modell mithilfe der Flask-AppBuilder SQLAInterface-Klasse mit der Ansicht. Diese Klasse ermöglicht Ihnen die Interaktion mit dem Objekt in der Datenbank.

Diese Klasse verfügt über eine Bearbeitungsmethode, mit der Sie das Element aktualisieren können.

Angenommen, Ihr Modell wie unten ist:

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

Angenommen, Sie haben eine Aktion implementieren möchten, die den Kontaktnamen capiltalizes, und Sie wollen in der Lage sein, um es auf der der ‚Liste‘ zu tun und 'Zeige' Ansichten. Dies ist eine Möglichkeit, es zu tun:

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()) 

können Sie andere SQLAInterface Methoden überprüfen here.

+0

self.datamodel.edit (Kontakt) tut es. Vielen Dank! – RHSMan

+0

Nur als eine schnelle, wenn ein Hinzufügen für einen neuen Kontakteintrag wie das Element erstellen die Add-Funktion erwartet? Ich kann jedoch eine neue Frage erstellen – RHSMan

Verwandte Themen