2016-07-16 16 views
0

Ich entwickle "Mitgliederdetails hinzufügen" und "Mitgliederdetails bearbeiten" -Seite. Für „hinzufügen Mitglied Details“ Ich bin mit wtf Formular unten (Stripped Version)Standardwerte in wtforms-Formular festlegen

class RegisterForm(Form): 

    name = TextField(
     'Name', 
     validators=[DataRequired(), Length(min=3, max=25)] 
    ) 

    phone = TextField(
     'Phone', 
     validators=[DataRequired(), 
      Length(min=10, max=10, message="Invalid phone number")], 
    ) 

für Edit-Seite, ist Idee EditForm von RegisterForm und Standard auf Werte von Namen und Telefon zu erben. Aber kämpfen, um die Erbschaft zu verwalten. Unten ist was ich versuche zu erreichen. Jede Hilfe wird geschätzt.

class EditForm(RegisterForm): 
    def __init__(not sure of args, member): 
     self.name.default = member.name 
     self.phone.default = member.phone 

Antwort

0

Wenn TextField verwenden, sollten Sie self.field.data statt self.field.default gesetzt. Und in diesem Fall können Sie Ihre Standardwerte einfach durch Übergeben der member im Standardkonstruktor Ihres Formulars mit dem Schlüsselwort obj erreichen. Hier ist, was ich meine:

form = EditForm(obj=member) 

Das Formular für Attribute auf member sucht ihre Felder mit dem gleichen Namen zu füllen (hier ist the docs darüber). Es hat den gleichen Effekt wie der folgende Code:

class EditForm(RegisterForm): 
    def __init__(self, member, *args, **kwargs): 
     super(EditForm, self).__init__(*args, **kwargs) 
     self.name.data = member.name 
     self.phone.date = member.phone