【问题标题】:User Model Customisation in DjangoDjango 中的用户模型自定义
【发布时间】:2020-03-04 10:59:12
【问题描述】:

我想在admin.py 中编辑用户模型,但我不知道该怎么做? Here is the Image of Admin Panel of User Model

有人可以帮帮我吗?我想在 User 模型中添加一些自定义字段。

【问题讨论】:

    标签: django django-models django-admin-filters django-admin-tools django-admin-actions


    【解决方案1】:

    您可以通过从 django 扩展 AbstractUser 来做到这一点。

    # models.py
    
    from django.contrib.auth.models import AbstractUser
    from django.db import models
    from django.utils.translation import gettext_lazy as _
    
    
    class User(AbstractUser):
        EMAIL_FIELD = 'email'
        USERNAME_FIELD = 'email'
        REQUIRED_FIELDS = ['username']
    
        email = models.EmailField(
            _('email address'),
            unique=True,
            blank=True
        )
        cellphone = models.CharField(
            _('cell phone'),
            max_length=20,
            null=True, blank=True
        )
    

    那么您还需要在设置中指定此自定义用户模型。指定您刚刚创建的用户模型的路径。 <app_name>.<ModelClassName>

    # settings.py
    
    AUTH_USER_MODEL = 'users.User'
    

    最后,你的管理员还必须继承 Django 默认的UserAdmin,如果你想省去创建他们已经创建的一些方法的麻烦的话。现在,您还可以利用所有 现有的管理功能。

    # admin.py
    
    from django.contrib.auth import get_user_model
    from django.contrib.auth.admin import UserAdmin as OrigUserAdmin
    
    User = get_user_model()
    
    
    @admin.register(User)
    class UserAdmin(OrigUserAdmin):
      list_display = (
        'id', 'first_name', 'last_name', 'username', 'email', 'is_active'
      )
    

    【讨论】:

      【解决方案2】:

      使用“AbstractUser”模型在 Django 中扩展预定义用户模型。

      然后我们可以轻松地在用户模型中添加一些字段或添加更多信息。

      from django.db import models
      from django.contrib.auth.models import AbstractUser
      
      class User(AbstractUser):
          bio = models.TextField(max_length=500, blank=True)
          location = models.CharField(max_length=30, blank=True)
          birth_date = models.DateField(null=True, blank=True)
      

      然后我们必须更新定义 AUTH_USER_MODEL 属性的 settings.py。

      AUTH_USER_MODEL = 'core.User'
      

      点击此链接了解更多信息:-https://simpleisbetterthancomplex.com/tutorial/2016/07/22/how-to-extend-django-user-model.html

      【讨论】:

        猜你喜欢
        • 2014-02-07
        • 2015-06-18
        • 1970-01-01
        • 2013-03-21
        • 1970-01-01
        • 1970-01-01
        • 2012-06-28
        • 2014-01-04
        • 2021-04-15
        相关资源
        最近更新 更多