【问题标题】:raise TypeError("%s() got an unexpected keyword argument '%s'" % (cls.__name__, kwarg)) TypeError: User() got an unexpected keyword argument 'phone'raise TypeError("%s() got an unexpected keyword argument '%s'" % (cls.__name__, kwarg)) TypeError: User() got an unexpected keyword argument 'phone'
【发布时间】:2020-05-15 18:11:34
【问题描述】:

我在 auth_user 中手动创建了一个表属性 phone(如果我删除 phone 属性它工作正常)但是当我添加 phone 时它给出了错误。

我尝试了所有方法,但它不起作用是在 django 中存储数据的好方法

def signup(request):
if request.method == "POST": 

    firstName = request.POST.get('firstName', None)
    lastName = request.POST.get('lastName', None)
    username = request.POST.get('username',None)
    email = request.POST.get('email', None)
    mobileNumber = request.POST.get('mobileNumber',None)
    password = request.POST.get('password', None)
    user=User.objects.create_user(
        first_name = firstName,
        last_name = lastName, 
        username = username, 
        email = email, 
        phone = mobileNumber,
        password = password

    )
    user.save()

    return HttpResponse('Succesfully user created')

【问题讨论】:

    标签: django django-models django-forms django-views


    【解决方案1】:

    在您的情况下,Django 不知道您在表中添加了一个额外的字段。 Django 从models.pymigrations 文件中获取这些信息。

    与其手动将phone 字段添加到auth_user 表中,不如始终在项目中使用自定义User 模型来轻松自定义User 模型。 Extending User model Documentation.

    1. 创建自定义用户模型
    from django.db import models
    from django.contrib.auth.models import AbstractUser
    
    
    class User(AbstractUser):
        phone = models.CharField(max_length=15, blank=True)
    
    1. 更新您的settings 文件
    # Here app_name is the name of the app
    # inside which you created the User model
    AUTH_USER_MODEL = '<app_name>.User'
    
    1. 通过从特定文件导入或使用django 中提供的get_user_model 函数来使用User 模型。

    【讨论】:

    • 我是否需要在模型中也覆盖 BaseUserManager。
    猜你喜欢
    • 2019-12-10
    • 1970-01-01
    • 2021-01-19
    • 1970-01-01
    • 2022-01-12
    • 2015-09-23
    • 2021-06-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多