Filtro em campo reference de tabela

21 views
Skip to first unread message

Volney Casas

unread,
Jul 22, 2016, 1:26:30 PM7/22/16
to web2py-users-brazil
Boa tarde comunidade, meu sofrimento do dia é o seguinte:

Minhas três tabelas envolvidas:
 1 - auth_user q todos já conhecem;
2- auth membership, com com os grupos de usuários e suas permissões
3- tabela processos com um campo reference a auth_user
Processos = db.define_table('processo',  
   
Field('cliente', 'reference auth_user', label='Cliente'),    
    auth
.signature
   
)

Da maneira que ela está, se eu for inserir dados nela, vão aparecer todos us clientes cadastrados, correto? Mas como nem tudo na vida são flores, eu preciso que só apareçam os clientes do grupo 3 de auth_membership.
Consegui algo usando o validador IS_IN_DB(seguindo uma dica aqui do grupo):
Processos.cliente.requires = IS_IN_DB(db(db.auth_membership.group_id==3), 'auth_membership.user_id').

Funcionou em parte, pq que no form está aparecendo o id do usuário ao invés do nome.
Alguém sabe como fazer listar o nome ao invés do id do user?
Fiz de maneira errada?
O que eu faço da minha vida?
Qual o sentido da vida do universo e tudo mais?

Marlysson Silva

unread,
Jul 22, 2016, 10:25:23 PM7/22/16
to web2py-users-brazil
O 3º argumento do IS_IN_DB recebe uma representação da string mostrada ( se o campo desejado tivesse na mesma tabela seria mais fácil kk ) ou uma função , que pelo que vi pode receber um valor , executar uma função e retornar a representação. Acho que recebendo um membership ( no caso id ) e buscando no auth_user pelo  nome e retornando daria certo.

Outro modo , seria fazer a busca com a dal já retornando os dados da busca, tipo, buscar na tabela auth_users os usuarios com o id_group == 3, e no retorno da representação , tu via quais os campos que vinham, e com isso usaria no format..no campo.

Basicamente usando um conjunto de dados desejado, que tu já busca, e usando no format o valor do campo da row desejada re
Reply all
Reply to author
Forward
0 new messages