2016-03-29 13 views
0

Derzeit arbeiten an einem Projekt mit TurboGears2 und ToscaWidgets2. Ich habe ein Formular-Setup mit ein paar statischen Feldern, Name, Datum und Kontaktdaten. In diesem Formular habe ich ein Unterformular hinzugefügt, wo der Benutzer dynamisch zahlreiche Einträge in einem GrowingGridLayout hinzufügen kann. Das Formular, sein Layout und das Einreichen von Informationen sind alle gut und gut, aber es fällt mir schwer herauszufinden, wie man die Informationen aus dem GrowingGridLayout erfasst, sobald es zum Speichern übergeben wurde. Erraten Sie die wichtigsten Punkte sind, wie kann ich wissen, wie viele Einträge in das Formular aufgenommen wurden?ToscaWidgets2 Daten von GrowingGridLayout erfassen

enthalten den Code für das Formular:

class OnrampForm(twf.Form): 
    title = "Onramp Submission Form" 

    class child(twd.CustomisedTableForm): 
     onramp_name = twf.TextField(validator=twc.Required) 

     class Destinations (twd.GrowingGridLayout): 
      environment = twf.SingleSelectField(label='Environment', validator=twc.Validator(required=True), options=[<OPTIONS>]) 
      location = twf.SingleSelectField(validator=twc.Required, label='Location', options=[<OPTIONS>]) 
      jms_type = twf.SingleSelectField(label='JMS Type', validator=twc.Validator(required=True), options=[<OPTIONS>]) 
      subscription_type = twf.SingleSelectField(label='Subscription Type', validator=twc.Validator(required=True), options=[<OPTIONS>]) 

     onramp_status = twf.SingleSelectField(prompt_text='Status', options=['Initial Release', 'Update'], validator=twc.Required) 
     current_date = datetime.date.today() 
     need_by_date = twd.CalendarDatePicker(validators=[twc.Required, twc.DateTimeValidator]) 
     need_by_date.default = current_date + datetime.timedelta(days=30) 
     organization = twf.TextField(validator=twc.Required) 
     poc_name = twf.TextField(validator=twc.Required) 
     poc_email = twf.EmailField(validator=twc.EmailValidator) 
     poc_phone = twf.TextField(validator=twc.Required) 
     poc_address = twf.TextField() 
     poc_city = twf.TextField() 
     poc_state = twf.TextField() 
     onramp_form = twf.FileField() 
     submit = twf.SubmitButton(value="Submit") 

    action = "/print_args" 
    submit = "" 

Antwort

0

Wenn Sie @validate s gegen die Form der Steuerung sollten Sie die Daten in den Destination Parameter erhalten, die eine Liste der Wörterbücher sein sollte.

Auch ich habe gerade bemerkt, dass Sie zwei verschachtelte Formen haben, das ist etwas, das TW2 ziemlich verwirren könnte. Was Sie tun wollten, ist wahrscheinlich OnrampForm erben CustomisedForm und dann haben child erben TableLayout. Siehe http://turbogears.readthedocs.org/en/latest/cookbook/TwForms.html#displaying-forms

PS: beachten Sie, dass need_by_date.default = current_date + datetime.timedelta(days=30) immer 30 Tage nach zurück, wenn der Server gestartet, wie Sie tatsächlich eine current_date = datetime.date.today() Klassenvariable zu speichern, die berechnet werden, wenn das Modul importiert wird und nicht mehr.

Sie sollten default = Deferred(lambda: datetime.date.today() + datetime.timedelta(days=30)) verwenden, um das

zu erreichen