向用户添加一个字段

Posted

技术标签:

【中文标题】向用户添加一个字段【英文标题】:Add one field to User 【发布时间】:2022-01-20 20:33:08 【问题描述】:

切换抽象用户后,我在 dev 上的登录/管理页面无法使用 Debug = True 和 python manage.py runserver 进行签名。

它可以在 prod 上运行,但没有任何问题。

登录开发时我得到

    Please enter a correct username and password. Note that both fields may be case-sensitive.

我还删除了我的 sqlite 数据库并对其使用了 makemigrations。

我想做的只是,以便他们可以上传文件。

models.py

from django.db import models
from django.contrib.auth.models import AbstractUser

class Profile(AbstractUser):
    
    """ bio = models.TextField(max_length=500, blank=True)
    phone_number = models.CharField(max_length=12, blank=True)
    birth_date = models.DateField(null=True, blank=True) """
    avatar = models.ImageField(default='default.png', upload_to='users/', null=True, blank=True)

admin.py

from django.contrib import admin
from django.contrib.auth.admin import UserAdmin

from .models import Profile

class CustomUserAdmin(UserAdmin):
    pass

admin.site.register(Profile, CustomUserAdmin)

settings.py

# Extends default user with additional fields 
AUTH_USER_MODEL = 'pages.Profile'

当我使用迁移时

(portfolio) PS C:\Users\arund\Desktop\Code\Django\portfolio-project> python manage.py showmigrations
admin
 [X] 0001_initial
 [X] 0002_logentry_remove_auto_add
 [X] 0003_logentry_add_action_flag_choices
auth
 [X] 0001_initial
 [X] 0002_alter_permission_name_max_length
 [X] 0003_alter_user_email_max_length
 [X] 0004_alter_user_username_opts
 [X] 0005_alter_user_last_login_null
 [X] 0006_require_contenttypes_0002
 [X] 0007_alter_validators_add_error_messages
 [X] 0008_alter_user_username_max_length
 [X] 0009_alter_user_last_name_max_length
 [X] 0010_alter_group_name_max_length
 [X] 0011_update_proxy_permissions
 [X] 0012_alter_user_first_name_max_length
contenttypes
 [X] 0001_initial
 [X] 0002_remove_content_type_name
pages
 [X] 0001_initial
sessions
 [X] 0001_initial

尝试使用 Debug = True 登录的回溯

登录开发时我得到

(portfolio) PS C:\Users\arund\Desktop\Code\Django\portfolio-project>  python manage.py runserver
Watching for file changes with StatReloader
Performing system checks...

System check identified no issues (0 silenced).
December 18, 2021 - 13:11:34
Django version 3.2.9, using settings 'portfolio.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.
[18/Dec/2021 13:11:46] "GET / HTTP/1.1" 200 753
Not Found: /favicon.ico
[18/Dec/2021 13:11:47] "GET /favicon.ico HTTP/1.1" 404 2716
[18/Dec/2021 13:11:49] "GET /accounts/login/ HTTP/1.1" 200 1215
[18/Dec/2021 13:11:50] "POST /accounts/login/ HTTP/1.1" 200 1369
[18/Dec/2021 13:12:03] "POST /accounts/login/ HTTP/1.1" 200 1368
[18/Dec/2021 13:12:22] "POST /accounts/login/ HTTP/1.1" 200 1368
[18/Dec/2021 13:12:30] "POST /accounts/login/ HTTP/1.1" 200 1368
[18/Dec/2021 13:12:36] "POST /accounts/login/ HTTP/1.1" 200 1368
[18/Dec/2021 13:12:43] "POST /accounts/login/ HTTP/1.1" 200 1368
[18/Dec/2021 13:13:15] "POST /accounts/login/ HTTP/1.1" 200 1368

【问题讨论】:

请分享完整的错误回溯 只是在登录后它在包含这些和运行迁移和删除 sqllite 之前工作。 打开调试模式,以获得完整的错误回溯,我猜你的调试模式已关闭 我该怎么做? 在 settings.py 中设置DEBUG = True 【参考方案1】:

你删除数据库后是否运行python manage.py createsuperuser

【讨论】:

我做到了,它允许我通过管理员登录,当 debug = false 时在 prod 上登录帐户/登录。但是在debug=true和python manage.py runserver时没有通过dev登录。 我在开发时再次运行它,它以某种方式允许我登录。 这可能是由于来自 prod 的 HerokuDB。

以上是关于向用户添加一个字段的主要内容,如果未能解决你的问题,请参考以下文章

如何在 devexpress 中向表单字段添加动态验证规则

允许用户在需要输入更多内容时向表单添加更多文本框字段

WSO2 IS:向用户配置文件添加类型复选框的新声明(字段)

Django 1.4 - 在元字段 Model=User 的表单中向用户字段添加自定义错误消息

注册时尝试向 Firebase 用户添加新的数据字段,但 FirebaseUser.class 文件中没有更新 X 方法

向Wordpress用户配置文件添加额外字段