扩展用户模型

如果 Django 自带的用户模型不能满足我们需求,我们可以对其进行扩展。

1.创建用户信息模型

我们在 models 中新建一个用户信息模型,用 OneToOneField(一对一关系)来让它和 User(Django 自带的用户模型)来一一对应。

from django.db import models

# django的用户模型
from django.contrib.auth.models import User

# 用户扩展
class UserInfo(models.Model):
    # 一对一关系,一条 UserInfo 数据对应一个具体的 User
    # related_name='info' 表示 UserInfo 在 User 表中对应的名称的 'info'
    belong_to = models.OneToOneField(to=User, related_name='info')

    # 添加要扩展到 User 中的新字段
    age = models.IntegerField(null=True, blank=True)
    address = models.CharField(max_length=50, null=True, blank=True)

创建完成后请在后台管理添加相应的数据。




2.编写前端

我们把 UserInfo 的 related_name 设为了 info,在要调用 UserInfo 的数据时,可以这样使用:

request.user.info.xxx(对应字段名)

改写 userInfo.html,展示刚才扩展的新字段:


{% load staticfiles %}



    user_info


    

用户信息

用户名: {{ request.user.username }}

年龄: {{ request.user.info.age }}

所在地: {{ request.user.info.address }}




3.测试

登录后打开 http://127.0.0.1:8000/user_info/ ,看到新添加的字段和信息:

扩展用户模型_第1张图片

你可能感兴趣的:(扩展用户模型)