Django扩展默认的User模型

本文介绍了如何在Django中扩展内置的User模型,包括使用代理模型进行行为扩展,以及通过一对一关系表来增加自定义字段,详细讲解了这两种方法的实现和配置步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

Django自带用户认证,但是字段有限,很多时候我们需要对其进行扩展,可以使用以下几种方法:

  1. 使用代理模型
    这种方法不会创建新表,纯粹是行为上的,比如默认排序,自定义管理器或自定义模型方法等等,对于其他的Model若有相同的应用场景,也可以使用这种方法。
  2. 使用一对一关系表

使用代理模型

from django.db import models

class Person(models.Model):
    first_name = models.CharField(max_length=30)
    last_name = models.CharField(max_length=30)

class MyPerson(Person):
    class Meta:
        proxy = True

    def do_something(self):
        # ...
        pass

之后操作MyPerson

>>> p = Person.objects.create(first_name="foobar")
>>> MyPerson.objects.get(first_name="foobar")
<MyPerson: foobar>

使用一对一关系表

from django.contrib.auth.models import User

class Employee(models.Model):
    user = models.OneToOneField(User, primary_key=True, on_delete=models.CASCADE)
    department = models.CharField(max_length=100)

修改settings.py的配置,增加

AUTH_PROFILE_MODULE = 'djangoadmin.myadmin.UserProfile'

参考

官方文档(Proxy Models)
官方文档(Extending the existing User model)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值