且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

向django中的用户添加自定义字段

更新时间:2023-01-30 08:53:04

我不知道一步一步我肯定一个扎实的谷歌会产生一些东西)。



1)创建一个 UserProfile 模型来保存额外的信息并放置它在你的 models.py 中。它可能看起来像这样:

  class UserProfile(models.Model):
#由auth模型请求
user = models.ForeignKey(User,unique = True)
middle_name = models.CharField(max_length = 30,null = True,blank = True)
pre>

2)通过添加此行(使用适当的名称)告诉您的新课程 settings.py

  AUTH_PROFILE_MODULE =myapp.UserProfile

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

这就是它所有。这不是全面的,但应该指向正确的方向。



更新:请注意, AUTH_PROFILE_MODULE 自v1.5以来已弃用: https ://docs.djangoproject.com/en/1.5/ref/settings/#auth-profile-module


I am using the create_user() function that Django provides to create my users. Also I want to store additional information about the users. So I tried following the instructions given at

http://docs.djangoproject.com/en/dev/topics/auth/#storing-additional-information-about-users

but I cannot get it to work for me. Is there a step-by-step guide that I can follow to get this to work for me?

Also, once I have added these custom fields, I would obviously need to add / edit / delete data from them. I cannot seem to find any instructions on how to do this.

I am not aware of a step by step(though I am sure a solid google would produce something). But here is a quick go at it.

1) Create a UserProfile model to hold the extra information and put it in your models.py. It could look something like this:

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)

2) Tell your settings.py about the new class by adding this line (with the appropriate name):

AUTH_PROFILE_MODULE = "myapp.UserProfile"

3) Add a signal listener to create a blank UserProfile record when a new user is added. You can find a great snippet with directions here.

4) When processing the new user record you can populate the UserProfile record as well. Here is how I do the insert (notice the 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()

That is all there is to it. This is not comprehensive, but should point you in the right direction.

Update: Please note that AUTH_PROFILE_MODULE is deprecated since v1.5: https://docs.djangoproject.com/en/1.5/ref/settings/#auth-profile-module