IS_IN_DB

31 views
Skip to first unread message

Charles tenorio

unread,
Jul 25, 2016, 10:37:31 AM7/25/16
to web2py-users-brazil
Gente, tem como usar IS_IN_DB com filtro? o senário e o seguinte uma tbl  tblcliente codigo e nome e uma tbl vendas
tblVendas=db.define_table('vendas',
Field('id_cliente', db.Apostas, requires= IS_IN_DB(db, 'Clintes.id', 'Clintes.nome'), label='Cliente'),)

gostaria que aparecesse somente os clientes que o usuário digitou pois na tblClientes eu gravo o auth.user_id, ai gostaria de fazer esse filtro. mostra somente os clientes do usuário logado.

Marlysson Silva

unread,
Jul 25, 2016, 10:52:37 AM7/25/16
to web2py-users-brazil
Perfeitamente..
O construtor da função funciona assim:

IS_IN_DB(db|set,'table.value_field','%(representing_field)s',zero='choose one')

Onde o primeiro parâmetro é um conjunto de dados, podendo ser "db" ( para o banco de dados todo ) ou "set" ( com esse é possível usar o filtro ).
O segundo é o campo e o terceiro é a forma de representação. Blz.

Para o seu caso você teria que fazer uma busca prévia desses clientes.. como tem o objeto do user logado , tipo : auth_user; poderia pegar o id dele, tipo um auth.user.id e fazer a busca na tabela clientes pela id do user logado, db(db.clientes.id == auth.user.id).select() . E assim colocar esse conjunto de dados no primeiro parâmetro do IS_IN_DB.

Um link que podem ajudar , explica melhor.


E uma explicação da doc sobre o usuário logado atual no sistema.

auth.user contains a copy of the db.auth_user records for the current logged in user or None otherwise. There is also a auth.user_id which is the same as auth.user.id (i.e. the id of the current logger in user) or None. Similarly, auth.user_groups contains a dictionary where each key is the id of a group of with the current logged in user is member of, the value is the corresponding group role.
Reply all
Reply to author
Forward
0 new messages