Django 模型来操作 LDAP 条目

Django 模型来操作 LDAP 条目

我目前正在从事一个涉及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")

由此,成员中的值帐户条目已获取。

相关内容