Модель 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)

Чтобы управлять своими записями LDAP из Django Models, я использую пакет python django_ldapdb . В моделях .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'

Заметив это, я понимаю, что поле member в моем Модель Django содержит информацию только об атрибуте первого члена в моей записи учетных записей LDAP в базе данных LDAP.

Я хочу спросить: есть ли способ указать, что поле модели Django хранит несколько значений? (я хочу, чтобы мое поле «участник» содержало информацию обо всех участниках в группе учетных записей, в основном, содержащих все отличительные имена пользователей).

Большое спасибо.

1
задан 12 December 2013 в 14:15

1 ответ

Оказывается, что ситуацию можно разрешить, изменив:

member_attribute = CharField(db_column="member")

на:

member_attribute = ListField(db_column="member")

И этим все значения члена в Счета загружаются.

0
ответ дан 12 December 2013 в 14:15

Другие вопросы по тегам:

Похожие вопросы: