Câu hỏi Mô hình Django để thao tác nhập LDAP [đã đóng]


Tôi hiện đang làm việc trên một dự án liên quan Django khuôn khổ và OpenLDAP. Nhưng tôi đã gặp rắc rối.

Trong cơ sở dữ liệu LDAP của tôi, tôi có một mục có tên là Tài khoản, với các thuộc tính sau:

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)

Để thao tác các mục nhập LDAP của tôi từ Mô hình Django, tôi sử dụng django_ldapdb gói python. Trong models.py tập tin trong django tôi xác định những điều sau đây:

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__)

Sau đó, tôi mở một Django Shell, và bắt đầu chơi xung quanh với một số truy vấn:

#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'

Sau khi nhận thấy điều này, tôi nhận ra rằng trường thành viên, trong Mô hình Django của tôi, có thông tin về chỉ thuộc tính thành viên đầu tiên trong mục nhập Tài khoản LDAP của tôi, trong cơ sở dữ liệu LDAP.

Những gì tôi muốn hỏi là: có cách nào có thể, trong đó tôi có thể nói một lĩnh vực mô hình Django để giữ nhiều giá trị? (tôi muốn trường "thành viên" của tôi giữ thông tin về tất cả thành viên trong Nhóm Tài khoản, về cơ bản nắm giữ tất cả Tên phân biệt của người dùng).

Cảm ơn nhiều.


1
2017-12-12 10:15


gốc


Tôi rất vui vì bạn đã giải quyết được vấn đề của mình và có vẻ như nó có thể hữu ích cho người khác, nhưng, đây có phải là câu hỏi ubuntu không? Điều này có nên được di chuyển đến một trang SE khác không? - djeikyb
Thực ra, tôi nghĩ bạn đúng. Và tôi xin lỗi vì sai lầm của tôi. - John


Các câu trả lời:


Nó chỉ ra rằng tình hình có thể được giải quyết bằng cách thay đổi:

member_attribute = CharField(db_column="member")

đến:

member_attribute = ListField(db_column="member")

Và bởi tất cả điều này hội viên giá trị trong Tài khoản mục nhập được tìm nạp.


2
2017-12-12 11:06