Acontece que a situação pode ser resolvida mudando:
member_attribute = CharField(db_column="member")
para:
member_attribute = ListField(db_column="member")
E, com isso, todos os valores membro na entrada Contas são buscados.
Atualmente, estou trabalhando em um projeto que envolve a estrutura Django e OpenLDAP . Mas eu me deparei com um problema.
No meu banco de dados LDAP, tenho uma entrada chamada Contas, com os seguintes atributos:
dn: ou=Accounts,dc=example,dc=ro
objectClass: groupOfNames
objectClass: top
cn: Accounts
member: cn=test1,ou=Accounts,dc=example,dc=ro
member: cn=test2,ou=Accounts,dc=example,dc=ro
member: cn=test3,ou=Accounts,dc=example,dc=ro
... (and so on, about 10 test users)
Para manipular minhas entradas LDAP do Django Models, eu uso o pacote django_ldapdb python. No arquivo models.py no django eu defini as seguintes coisas:
class LDAPEntry():
base_dn = "ou=Accounts,dc=example,dc=ro"
object_classes = ["groupOfNames"]
group_name = CharField(db_column="cn", primary_key=True)
member_attribute = CharField(db_column="member")
# methods for displaying the group name(__str__ & __unicode__)
Depois disso, abro um Django Shell e começo a brincar com algumas consultas:
#this returns a instance for the Accounts group
group = LDAPEntry.objects.get(group_name = "Accounts")
#then i try to see the members that are part of this group
group.member
# and this returns the following thing:
u'cn=test1,ou=Accounts,dc=example,dc=ro'
Depois de perceber isso, percebo que o campo de membro, no meu modelo de Django, tem informações sobre apenas o primeiro atributo de membro na minha entrada de contas LDAP, no banco de dados LDAP.
O que eu quero perguntar é: existe uma maneira possível em que eu possa dizer a um campo de modelo do Django para manter múltiplos valores? (Eu quero o meu campo "membro" para armazenar informações sobre todos os membros no grupo de contas, basicamente, mantendo todos os nomes Distingueshed dos usuários).
Muito obrigado.
Acontece que a situação pode ser resolvida mudando:
member_attribute = CharField(db_column="member")
para:
member_attribute = ListField(db_column="member")
E, com isso, todos os valores membro na entrada Contas são buscados.