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.