Dav*_*542 39 django django-models
在向用户个人资料中添加其他字段时,例如位置,性别,雇主等,我应该在其中添加其他列django.contrib.auth.models.User并将其保存吗?或者我应该创建一个新表来保存用户配置文件信息?
此外,当用户上传个人资料图片时,我应该将其保存在同一个表格中吗?(注意这不是一个生产服务器,我只是在我的本地运行服务器上执行此操作来解决问题).谢谢
Eze*_*uez 45
您必须为用户配置文件创建模型:
class UserProfile(models.Model):
user = models.ForeignKey(User, unique=True)
location = models.CharField(max_length=140)
gender = models.CharField(max_length=140)
employer = models.ForeignKey(Employer)
profile_picture = models.ImageField(upload_to='thumbpath', blank=True)
def __unicode__(self):
return u'Profile of user: %s' % self.user.username
Run Code Online (Sandbox Code Playgroud)
然后配置settings.py:
AUTH_PROFILE_MODULE = 'accounts.UserProfile'
Run Code Online (Sandbox Code Playgroud)
Dmi*_*try 32
从概念上讲,OneToOneField类似于具有唯一= True的ForeignKey,但关系的"反向"侧将直接返回单个对象.这是扩展User类的推荐方法.
class UserProfile(models.Model):
user = models.OneToOneField(User)
...
Run Code Online (Sandbox Code Playgroud)
C14*_*14L 15
目前Django是1.9,这里是对过时接受的答案的一些更新
models.OneToOneField(User)related_name='profile'.__str__()和.format()Python 3像这样
class UserProfile(models.Model):
user = models.OneToOneField(User, related_name='profile')
location = models.CharField(max_length=140)
gender = models.CharField(max_length=140)
...
def __str__(self):
return 'Profile of user: {}'.format(self.user.username)
Run Code Online (Sandbox Code Playgroud)
使用related_name您可以轻松访问用户的个人资料,例如request.user
request.user.profile.location
request.user.profile.gender
Run Code Online (Sandbox Code Playgroud)
无需额外查找.
Nic*_*rdu 10
从Django 1.5开始,您可以使用简单的设置条目将默认用户替换为自定义用户对象:
AUTH_USER_MODEL = 'myapp.MyUser'
Run Code Online (Sandbox Code Playgroud)
有关更多详细信息,请查看此Django文档条目.
| 归档时间: |
|
| 查看次数: |
32897 次 |
| 最近记录: |