Django 如何迭代从 ldap 返回的列表以保存新对象
Django How to iterate over list returned from ldap to save new object
我有以下型号:
class SystemUsers(models.Model):
username = models.CharField(max_length=25)
displayName = models.CharField(max_length=100)
phoneNumber = models.BigIntegerField(max_length=10)
emailAddress = models.EmailField(max_length=100)
employeeNumber = models.CharField(max_length=7)
firstName = models.CharField(max_length=20)
lastName = models.CharField(max_length=30)
我有一个从活动目录返回以下内容的 ldap 查询:
user_details = []
for entry in results:
user_details.append(entry[1]['sAMAccountName'][0].lower())
user_details.append(entry[1]['displayName'][0].replace(",", " "))
user_details.append(entry[1]['telephoneNumber'][0].replace("-", ""))
user_details.append(entry[1]['mail'][0].lower())
user_details.append(entry[1]['employeeID'][0].lower())
user_details.append(entry[1]['givenName'][0])
user_details.append(entry[1]['sn'][0])
return user_details
我得到了预期的结果,但我无法解析列表以将其放入 SystemUser(....).save() 块以将其保存到数据库。我得到的只是一个我无法循环或为其设置变量的列表。
当我做
for item in user_details:
print(item)
我只有 7 行值。我无法得到它,所以 item[0] 是用户名,item[1] 是显示名称,等等,etc
您可以使用用户数据创建字典并使用 kwargs
魔法:
field_names = ('username', 'displayName', 'phoneNumber', 'emailAddress',
'employeeNumber', 'firstName', 'lastName', )
data = dict(zip(field_names, user_details)
SystemUser.objects.create(**data)
顺便说一句,从一开始就把 user_details
作为字典可能是个更好的主意?
user_details = {
'username': entry[1]['sAMAccountName'][0].lower(),
'displayName': entry[1]['displayName'][0].replace(",", " "),
'phoneNumber': entry[1]['telephoneNumber'][0].replace("-", ""),
'emailAddress': entry[1]['mail'][0].lower(),
'employeeNumber': entry[1]['employeeID'][0].lower(),
'firstName': entry[1]['givenName'][0],
'lastName': entry[1]['sn'][0],
}
SystemUser.objects.create(**user_details)
我有以下型号:
class SystemUsers(models.Model):
username = models.CharField(max_length=25)
displayName = models.CharField(max_length=100)
phoneNumber = models.BigIntegerField(max_length=10)
emailAddress = models.EmailField(max_length=100)
employeeNumber = models.CharField(max_length=7)
firstName = models.CharField(max_length=20)
lastName = models.CharField(max_length=30)
我有一个从活动目录返回以下内容的 ldap 查询:
user_details = []
for entry in results:
user_details.append(entry[1]['sAMAccountName'][0].lower())
user_details.append(entry[1]['displayName'][0].replace(",", " "))
user_details.append(entry[1]['telephoneNumber'][0].replace("-", ""))
user_details.append(entry[1]['mail'][0].lower())
user_details.append(entry[1]['employeeID'][0].lower())
user_details.append(entry[1]['givenName'][0])
user_details.append(entry[1]['sn'][0])
return user_details
我得到了预期的结果,但我无法解析列表以将其放入 SystemUser(....).save() 块以将其保存到数据库。我得到的只是一个我无法循环或为其设置变量的列表。
当我做
for item in user_details:
print(item)
我只有 7 行值。我无法得到它,所以 item[0] 是用户名,item[1] 是显示名称,等等,etc
您可以使用用户数据创建字典并使用 kwargs
魔法:
field_names = ('username', 'displayName', 'phoneNumber', 'emailAddress',
'employeeNumber', 'firstName', 'lastName', )
data = dict(zip(field_names, user_details)
SystemUser.objects.create(**data)
顺便说一句,从一开始就把 user_details
作为字典可能是个更好的主意?
user_details = {
'username': entry[1]['sAMAccountName'][0].lower(),
'displayName': entry[1]['displayName'][0].replace(",", " "),
'phoneNumber': entry[1]['telephoneNumber'][0].replace("-", ""),
'emailAddress': entry[1]['mail'][0].lower(),
'employeeNumber': entry[1]['employeeID'][0].lower(),
'firstName': entry[1]['givenName'][0],
'lastName': entry[1]['sn'][0],
}
SystemUser.objects.create(**user_details)