Hello my friends, as I did not find anything in the international and
national forums and no solution on the internet, I decided to post my
question. I have the following table structure:
## DB models.py
db.define_table(
'pessoas'
,Field('pes_nome_razao_social'
,notnull=True
,label=T("Nome")
,requires=IS_NOT_EMPTY() )
,Field('pes_apelido',label=T("Apelido/Nome Fantasia"))
,Field('pes_cpf_cnpj',label=T("CPF/CNPJ"),unique=True)
,Field('pes_rg_ie',label=T("RG/I.E."))
,Field('pes_created_on','datetime', label=T("Created On"))
,Field('pes_notas','text',label=T("Notas") )
,Field('pes_tipo','string',length=20,label=T("Tipo") ) # ????
,format="%(id)d - %(pes_nome_razao_social)s (%(pes_apelido)s)"
)
db.define_table(
'clientes'
,Field('pessoa_id','reference pessoas',unique=True)
,Field('profissao','string')
,format="%(pessoa_id)s"
)
## controller
if len(request.args) == 1: pessoa = db(db.pessoas.id ==
request.args(0)).select().first() cliente = db(db.clientes.pessoa_id ==
request.args(0)).select().first() # record = dict(pessoa.as_dict(),
**cliente.as_dict()) form = SQLFORM.factory( db.pessoas, db.clientes,
record=record )
form.elements('#no_table_pes_nome_razao_social')[0]['_placeholder'] = 'Nome
ou Razão Social' if form.accepts(request,session):
form.vars.pessoa_id=request.args(0)
cliente.update_record(**db.clientes._filter_fields(form.vars))
form.vars.id=request.args(0)
pessoa.update_record(**db.pessoas._filter_fields(form.vars))
response.flash=T('Thanks for filling the form') elif form.errors:
response.flash=T('Erros no form') else: response.flash = "Me preencha"
else: form = SQLFORM.factory(db.pessoas,db.clientes)
form.elements('#no_table_pes_nome_razao_social')[0]['_placeholder'] = 'Nome
ou Razão Social' if form.vars: id =
db.pessoas.insert(**db.pessoas._filter_fields(form.vars))
form.vars.pessoas=id id =
db.clientes.insert(**db.clientes._filter_fields(form.vars))
response.flash=T('Thanks for filling the form') return
dict(form=form,url=url,clientes=classe)
Using SQLFORM.factory I can bind data from a query to the factory, however
when I run the submit in form I get a duplicate error and so it does not
update the data, I know I could use a manual solution to work around the
problem, but How do I do this without losing validate (), accpets () and
process (), since I can validate the fields magically with a ready function?
--
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 [email protected].
For more options, visit https://groups.google.com/d/optout.