Ok, now that we know the problem isn't with SQLFORM.factory lets look 
closer at the generated html when using {{=form}} vs the html you typed in.

Specifically:

<select class="form-control selectpicker"  id="no_table_address_type" 
name="address_type" data-style="btn-info btn-outline-info">                
                                                            
    {{for t in address_type_list:}}
        <option value="{{=t.id}}">{{=t.type}}</option>
    {{pass}}
</select>

I'm curious why you're using your own custom html instead of using the 
custom form technique.  
  
http://web2py.com/books/default/chapter/29/07/forms-and-validators#Custom-forms

{{=form.custom.begin}}
{{=form.custom.widget.name}}
{{=form.custom.widget.cpf}}
{{=form.custom.widget.email}}
{{=form.custom.widget.address_type}}
{{=form.custom.widget.cities}}
{{=form.custom.widget.person}}
{{=form.custom.submit}}
{{=form.custom.end}}

Good luck

-Jim

On Tuesday, August 21, 2018 at 2:57:33 PM UTC-5, Rodrigo Gomes wrote:
>
> I just tested with {{= form}} and it really worked, so the problem is 
> between
>
> <form action="#" class="form-material" enctype="multipart/form-data" 
> method="post">
>
> <input...
> <input...
> <input...
> <input...
>
> <div class="hidden">    {{=form.hidden_fields()}}
> </div>
>
> <input class="btn btn-info" type="submit" value="Salvar"> 
> </form>
>
>
>
>
> terça-feira, 21 de Agosto de 2018 às 13:46:55 UTC-3, Jim S escreveu:
>>
>> Have you tried just displaying the form in your view using {{=form}}.  
>> Then add a requires=IS_IN_DB to the fields in your model.  I'd do this just 
>> to make sure that SQLFORM.factory is working as expected.  Make sense?
>>
>>
>> http://web2py.com/books/default/chapter/29/07/forms-and-validators#Database-validators
>>
>> -Jim
>>
>> On Tuesday, August 21, 2018 at 11:34:23 AM UTC-5, Rodrigo Gomes wrote:
>>>
>>> i really think its a bug in form.factory, i tried modify by the 
>>> controller too, like 
>>> form.element(_id=no_table_cities).update(_class="selectpicker")
>>>
>>> and no sucess.
>>>
>>> terça-feira, 21 de Agosto de 2018 às 13:31:38 UTC-3, Rodrigo Gomes 
>>> escreveu:
>>>>
>>>> @auth.requires_login()
>>>> def students():
>>>> form = form=SQLFORM.factory(db.person, db.address)
>>>>
>>>> cities_list = db(db.cities.id>0).select(db.cities.ALL)
>>>> address_type_list = db(db.address_type.id>0
>>>> ).select(db.address_type.ALL)
>>>> person_list = db(db.person.id>0).select(db.person.ALL)
>>>>
>>>>
>>>> if form.process().accepted:
>>>> id = db.person.insert(**db.person._filter_fields(form.vars))
>>>> form.vars.person=id
>>>> id = db.address.insert(**db.address._filter_fields(form.vars))
>>>> redirect(URL('default','students'))
>>>> response.flash='Form Submetido com sucesso!' 
>>>> elif form.errors:
>>>> print(form.errors)
>>>> print(form.vars)
>>>> else:
>>>> print('please fill out the form')
>>>> return dict(form=form, cities_list=cities_list, 
>>>> address_type_list=address_type_list, 
>>>> person_list=person_list)
>>>>
>>>>
>>>> terça-feira, 21 de Agosto de 2018 às 10:10:39 UTC-3, Peng Wang escreveu:
>>>>>
>>>>> How did you define your cities_list?
>>>>>
>>>>> On Thursday, August 16, 2018 at 4:39:35 PM UTC-7, Rodrigo Gomes wrote:
>>>>>>
>>>>>>
>>>>>> Good evening, folks, I've come here to unveil a mystery, I'm 
>>>>>> developing an application with web2py, (framework that I use about 3 
>>>>>> years 
>>>>>> ago)
>>>>>>
>>>>>> I am using sqlform.factory, passing 2 tables, being that I do this to 
>>>>>> fill in a single form, table, person and address, for better 
>>>>>> understanding 
>>>>>> follows my controller, 
>>>>>>
>>>>>>
>>>>>> @auth.requires_login()
>>>>>> def students():
>>>>>>     form = form=SQLFORM.factory(db.person, db.address)
>>>>>>  
>>>>>>     if form.process().accepted:
>>>>>>        id = db.person.insert(**db.person._filter_fields(form.vars))
>>>>>>        form.vars.person=id
>>>>>>        id = db.address.insert(**db.address._filter_fields(form.vars))
>>>>>>        response.flash='Form Submetido com sucesso!' 
>>>>>>  
>>>>>>     elif form.errors:
>>>>>>        print(form.errors)
>>>>>>     else:
>>>>>>        print('please fill out the form')
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> if it helps, this is my model, the tables and their relationships, 
>>>>>>
>>>>>> db.define_table("person",
>>>>>>     Field("name", "string", length=50),
>>>>>>     Field("cpf", "string", length=11),
>>>>>>     Field("birthday", "date", length=11),
>>>>>>     Field("email","string", length=40),
>>>>>>     Field("registration_date","date", length=40)
>>>>>>     )
>>>>>>
>>>>>> db.define_table("cities",
>>>>>>     Field("name", "string"),
>>>>>>     Field("state","reference state")
>>>>>>     )
>>>>>>
>>>>>> db.define_table("address_type",
>>>>>>     Field("type","string",length=100),
>>>>>>     )
>>>>>>
>>>>>> db.define_table("address",
>>>>>>     Field("number","integer"),
>>>>>>     Field("public_place","string"),
>>>>>>     Field("cep","string",length=15),
>>>>>>     Field("complement","string"),
>>>>>>     Field("cities",'reference cities'),
>>>>>>     Field("address_type",'reference address_type'),
>>>>>>     Field("person",'reference person', writable=False,readable=False)
>>>>>>     )
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> This is my view 
>>>>>>
>>>>>> <form action="#" class="form-material" enctype="multipart/form-data" 
>>>>>> method="post">
>>>>>>         <div class="form-group">
>>>>>>             <div class="col-md-12 m-b-20">
>>>>>>                 <!--form.custom.widget.name -->
>>>>>>                 <input class="form-control" id="no_table_name" 
>>>>>> name="name" type="text" placeholder="nome">
>>>>>>             </div>
>>>>>>             <div class="col-md-12 m-b-20">
>>>>>>                 <!--form.custom.widget.cpf -->
>>>>>>                 <input class="form-control" id="no_table_cpf" name="cpf" 
>>>>>> type="text" placeholder="cpf">
>>>>>>             </div>
>>>>>>             
>>>>>>             <div class="col-md-12 m-b-20">
>>>>>>                 <!--form.custom.widget.email -->
>>>>>>                 <input class="form-control" id="no_table_email" 
>>>>>> name="email" type="text" placeholder="email">
>>>>>>             </div>                                                       
>>>>>>                  
>>>>>>             <div class="col-md-12 m-b-20">
>>>>>>                 <!--    <select class="form-control generic-widget" 
>>>>>> id="no_table_address_type" name="address_type"><option 
>>>>>> value="">Vazio</option><option value="1">Comercial</option><option 
>>>>>> value="2">Residencial</option></select> -->
>>>>>>                 
>>>>>>                 <select class="form-control selectpicker"  
>>>>>> id="no_table_address_type" name="address_type" data-style="btn-info 
>>>>>> btn-outline-info">                                                       
>>>>>>                      
>>>>>>                     {{for t in address_type_list:}}
>>>>>>                     <option value="{{=t.id}}">{{=t.type}}</option>
>>>>>>                     {{pass}}
>>>>>>                 </select>
>>>>>>             </div>
>>>>>>             <div class="col-md-12 m-b-20">
>>>>>>                 <select id="no_table_cities" name="cities" 
>>>>>> data-style="btn-info btn-outline-info" required>
>>>>>>                     {{for city in cities_list:}}
>>>>>>                     <option value="{{=city.id}}" >{{=city.name}}</option>
>>>>>>                     {{pass}}
>>>>>>                 </select>
>>>>>>             </div>
>>>>>>             
>>>>>>             <!--form.custom.end -->
>>>>>>             <div class="hidden">
>>>>>>                 {{=form.hidden_fields()}}
>>>>>>             </div>
>>>>>>         </div>
>>>>>>     
>>>>>>         <div class="modal-footer">
>>>>>>             <input class="btn btn-info" type="submit" value="Salvar">
>>>>>>             <button type="button" class="btn btn-default waves-effect" 
>>>>>> data-dismiss="modal">Cancelar</button>
>>>>>>         </div>
>>>>>>     </div>
>>>>>> </form>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> now the problem: this selectpicker, simply my form can not store the 
>>>>>> value of select, when I add this class, I needed it, I do not need it 
>>>>>> that 
>>>>>> much, but it became a mission to understand what's happening here, I 
>>>>>> gave a 
>>>>>> print em form. vars.cities and she's just like None, help please
>>>>>>
>>>>>> <Storage {'name': 'maria', 'cpf': '09102910', 'birthday': None, 
>>>>>> 'email': 'rodg...@gmail.com', 'registration_date' public_place ':' 
>>>>>> ',' '' '' '' '' '' '' '' '' '' 'cities': None, 'address_type': None, 
>>>>>> 'person': 4}>
>>>>>>
>>>>>

-- 
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to web2py+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to