我目前正在从事一个涉及Django框架和OpenLDAP。但我遇到了一个问题。
在我的 LDAP 数据库中,有一个名为 Accounts 的条目,具有以下属性:
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)
为了从 Django 模型操作我的 LDAP 条目,我使用django_ldapdbpython 包。在模型.py在 django 文件中我定义了以下内容:
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__)
之后,我打开 Django Shell,并开始尝试一些查询:
#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'
注意到这一点后,我意识到我的 Django 模型中的成员字段仅包含有关 LDAP 数据库中 LDAP 帐户条目中第一个成员属性的信息。
我想问的是:有没有可能的方法可以告诉 Django 模型字段保存多个值?(我希望我的“成员”字段保存有关帐户组中所有成员的信息,基本上保存所有用户的专有名称)。
非常感谢。
答案1
事实证明,可以通过改变以下内容来解决此情况:
member_attribute = CharField(db_column="member")
到:
member_attribute = ListField(db_column="member")
由此,成员中的值帐户条目已获取。