gpt4 book ai didi

python - 如何解决为用户指定未知字段(Id_card_number)的问题?

转载 作者:太空宇宙 更新时间:2023-11-03 20:33:21 25 4
gpt4 key购买 nike

我有代码,但每当我makemigrations时,它都会给出为用户指定的未知字段(Id_card_number)错误。如何解决这个问题?

settings.py

INSTALLED_APPS = [
'django.contrib.admin',
'users.apps.UsersConfig',
'firstapp.apps.FirstappConfig',
'crispy_forms',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]

AUTH_USER_MODEL = 'users.User'

admin.py

from django.contrib.auth.admin import UserAdmin

admin.site.register(User, UserAdmin)

models.py

class User(forms.ModelForm):
Id_card_number = models.CharField(max_length=15)

forms.py

class UserRegisterForm(UserCreationForm):
email = forms.EmailField(required=True)._unique = True
Id_card_number = forms.CharField(max_length=15, required=True)._unique = True

class Meta:
model = User
fields =['username','email','password1','password2','Id_card_number']

最佳答案

我假设您的 models.py 位于名为 users 的应用程序中(这就是您在 AUTH_USER_MODEL 声明中所说的内容)。它不应基于 forms.ModelForm,而应基于 AbstractUserAbstractBaseUser

您已开始创建自定义用户模型,但尚未完全执行。 Here是了解创建自定义用户模型的一个很好的资源,下面是创建自定义用户模型的快速概述(我建议从 AbstractUser 继承):

在名为 users 的应用程序的 models.py 文件中:

# users/models.py
from django.contrib.auth.models import AbstractUser
from django.db import models

class CustomUser(AbstractUser):
pass
# add additional fields in here

在您的设置文件中:

AUTH_USER_MODEL = users.CustomUser

上面的 CustomUser 声明结合告诉 Django 这现在是 AUTH_USER_MODEL 只是复制了 Django 的 auth User 模型(上述声明中尚未添加任何字段)。

现在,您可能想要为用户模型添加外键的每个地方,您都可以这样做:

from users.models import CustomUser

class SomeModel(models.Model):
user = models.ForeignKey('CustomUser', ...)

但是,为自定义用户模型设置 FK 的更好方法是通过引用 - 要么:

from django.contrib.auth import get_user_model

class SomeModel(models.Model):
user = models.ForeignKey(get_user_model(), ...)

from django.conf import settings

class SomeModel(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL, ...)

此外,在 admin.py 中您的声明:

from django.contrib.auth.admin import UserAdmin

此语句实际上使用 Django 的 contrib.auth 应用程序中的 User 模型。该用户模型没有 Id_card_number ,因此我认为这就是导致您看到的错误的原因。请注意上面链接的资源中的第 5 步 - 它将告诉您如何在 admin.py 中为 CustomUser 模型进行设置。

Further reference

关于python - 如何解决为用户指定未知字段(Id_card_number)的问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57337809/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com