Django 中如何给 User 增加额外的 Profile 信息

摘要: http://www.b-list.org/weblog/2006/06/06/django-tips-extending-user-model

这里的做法是定义一个独立的模型及独立的数据表来表示 profile.

1. 首先添加一个 model 来专门定义 profile:

from  django.db  import  models
from  django.contrib.auth.models  import  User
     
class  UserProfile(models.Model):
    url 
=  models.URLField()
    home_address 
=  models.TextField()
    phone_numer 
=  models.PhoneNumberField()
    user 
=  models.ForeignKey(User, unique = True)

(注意上面代码里用 ForeignKey 搭配 unique=True 的设置,取代了老的做法 OneToOneField)

2. 然后在 settings.py 里面设置一下,让 Django 的框架知道你定义了这个模型作为 profile:

AUTH_PROFILE_MODULE  =   ' myapp.UserProfile '

这一步需要特别当心,只需要写 appname.ModelName 即可。如果写多了,则可能出现 "too many values to unpack" 的错误。

3. 当然还需要执行一下同步数据库操作:

python manage.py syncdb

4. 现在可以利用内建的 User 模型的 get_profile 方法获取到对应的 Profile 对象:

from  django.contrib.auth.models  import  User
=  User.objects.get(pk = 1 #  Get the first user in the system
user_address  =  u.get_profile().home_address
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值