我必须将客户信息存储在客户表中。我们不需要存储它们的username和password。但是为了创建客户组和用户,我使用了 djangoUser和Group模型。这是我用来存储基本信息的客户模型。
class Customer(models.Model):
"""
The Customer
"""
UID = models.TextField(blank=True, null=True, db_index=True)
fk_user = models.ForeignKey(User, primary_key=False)
fk_details = models.ForeignKey(UserDetails, primary_key=False)
fk_contact_details = models.ForeignKey(ContactDetails, primary_key=False)
...
Run Code Online (Sandbox Code Playgroud)
这是一个创建用户对象的类方法,稍后我将使用它来存储客户信息:
from django.contrib.auth.models import User
def create_user(self, req_dict):
'''
Create a new User
'''
try:
user=User.objects.create_user(**req_dict)
user.save()
except:
return None
return user
Run Code Online (Sandbox Code Playgroud)
但是这段代码抛出了一个IntegrityError,这是因为我们没有在req_dict
req_dict = {'first_name': u'John', 'last_name': u'Smith', 'email': u'john.smith@xyz.com'}
Run Code Online (Sandbox Code Playgroud)
创建新用户时存储用户名可选的方法是什么?
如果要使用django.contrib.auth,则不能将用户名字段设为可选。您总是必须在数据库中放入一个值。
为了绕过它,我建议您create_user()为 username生成一个值。您可以使用随机值,也可以从电子邮件创建用户名。只要确保它是独一无二的。