我正在使用Django提供的create_user()函数来创建我的用户.另外,我想存储有关用户的其他信息.所以我尝试按照给出的说明进行操作
http://docs.djangoproject.com/en/dev/topics/auth/#storing-additional-information-about-users
但我无法让它为我工作.是否有一个循序渐进的指南,我可以遵循以使这个为我工作?
此外,一旦我添加了这些自定义字段,我显然需要添加/编辑/删除它们中的数据.我似乎无法找到有关如何执行此操作的任何说明.
rig*_*nmr 23
该建议的方法是创建一个新的模型,并给它一个OneToOneField()具有内置的User像这样的模型:
class Student(models.Model):
user = models.OneToOneField(User)
college = models.CharField(max_length=30)
major = models.CharField(max_length=30)
Run Code Online (Sandbox Code Playgroud)
等等
然后你可以访问这样的字段:
user = User.objects.get(username='jsmith')
college = user.student.college
Run Code Online (Sandbox Code Playgroud)
Jas*_*ebb 18
我不知道一步一步(虽然我确信一个坚实的谷歌会产生一些东西).但这是一个快速的去做.
1)创建一个UserProfile模型来保存额外的信息并将其放入您的models.py.它可能看起来像这样:
class UserProfile(models.Model):
#required by the auth model
user = models.ForeignKey(User, unique=True)
middle_name = models.CharField(max_length=30, null=True, blank=True)
Run Code Online (Sandbox Code Playgroud)
2)settings.py通过添加此行(使用适当的名称)来告诉您有关新课程的信息:
AUTH_PROFILE_MODULE = "myapp.UserProfile"
Run Code Online (Sandbox Code Playgroud)
3)添加信号监听器以UserProfile在添加新用户时创建空白记录.你可以在这里找到一个很棒的方向片段.
4)处理新用户记录时,您也可以填充UserProfile记录.这是我如何插入(注意get_profile):
if (form.is_valid()):
cd = form.cleaned_data
user = User.objects.create_user(cd["UserName"], cd["Email"], cd["Password"])
user.first_name = cd["FirstName"]
user.last_name = cd["LastName"]
user.save()
#Save userinfo record
uinfo = user.get_profile()
uinfo.middle_name = cd["MiddleName"]
uinfo.save()
Run Code Online (Sandbox Code Playgroud)
这就是它的全部.这不是全面的,但应该指向正确的方向.
更新:请注意,AUTH_PROFILE_MODULE自v1.5起不推荐使用:https://docs.djangoproject.com/en/1.5/ref/settings/#auth-profile-module
Sad*_*egh 11
我知道现在为时已晚,Django自此以后发生了很大变化,但仅限于寻求者,
根据Django文档,如果您对User模型感到满意并且只想添加一些额外的字段,请执行以下操作:
1-你models.py应该是这样的:
from django.contrib.auth.models import AbstractUser
class CustomUser(AbstractUser):
mobile = models.CharField(max_length=16)
# if your additional field is a required field, just add it, don't forget to add 'email' field too.
# REQUIRED_FIELDS = ['mobile', 'email']
Run Code Online (Sandbox Code Playgroud)
2-添加到 setting.py
AUTH_USER_MODEL = 'myapp.CustomUser'
Run Code Online (Sandbox Code Playgroud)
完成了!
现在你可以跑了 python manage.py syncdb
| 归档时间: |
|
| 查看次数: |
20529 次 |
| 最近记录: |