2016-03-29 4 views
0

В настоящее время работает над проектом с TurboGears2 и ToscaWidgets2. У меня есть установка формы с несколькими статическими полями, именем, датой и точкой контакта. Внутри этой формы я добавил дополнительную форму, в которой пользователь может динамически добавлять многочисленные записи в GrowingGridLayout. Форма, ее расположение и представление информации - все хорошо и хорошо, но мне сложно понять, как захватить информацию из GrowingGridLayout после ее передачи для сохранения. Угадайте основные моменты, как узнать, сколько записей было включено в форму?ToscaWidgets2 Capture Data from GrowingGridLayout

Включено код вида:

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 = "" 

ответ

0

Если контроллер @validate сек против формы вы должны получить данные в параметр Destination, который должен быть список словарей.

Также я заметил, что у вас есть две вложенные формы, вот что может смутить TW2 в значительной степени. То, что вы хотели сделать, вероятно, имеет OnrampForm inherit CustomisedForm, а затем child inherit TableLayout. См http://turbogears.readthedocs.org/en/latest/cookbook/TwForms.html#displaying-forms

PS: обратите внимание, что need_by_date.default = current_date + datetime.timedelta(days=30) всегда будет возвращать 30 дней с момента запуска сервера, как вы на самом деле хранения переменной current_date = datetime.date.today() класса, который не получает вычисленное, когда модуль импортируется и не более.

Вы должны использовать default = Deferred(lambda: datetime.date.today() + datetime.timedelta(days=30)) для достижения этого

 Смежные вопросы

  • Нет связанных вопросов^_^