Python 如何解决为用户指定的未知字段(Id\U卡号)的问题?
我有代码,但每当我Python 如何解决为用户指定的未知字段(Id\U卡号)的问题?,python,html,django,Python,Html,Django,我有代码,但每当我进行迁移时,它都会给我错误的为用户指定的未知字段(Id\U卡号)。如何解决这个问题 设置.py 管理员 models.py forms.py 我假设您的models.py在一个名为users的应用程序中(这就是您在AUTH\u USER\u MODEL声明中所说的)。与其将User基于forms.ModelForm,不如将其基于AbstractUser或AbstractBaseUser 您已经开始创建自定义用户模型,但尚未完全遵循。是学习创建自定义用户模型的好资源,下面是创建自
进行迁移时
,它都会给我错误的为用户指定的未知字段(Id\U卡号)
。如何解决这个问题
设置.py
管理员
models.py
forms.py
我假设您的
models.py
在一个名为users
的应用程序中(这就是您在AUTH\u USER\u MODEL
声明中所说的)。与其将User
基于forms.ModelForm
,不如将其基于AbstractUser
或AbstractBaseUser
您已经开始创建自定义用户模型,但尚未完全遵循。是学习创建自定义用户模型的好资源,下面是创建自定义用户模型的快速概述(我建议继承自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\u USER\u模型
简单地复制了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(), ...)
或
另外,在admin.py
您的声明中:
from django.contrib.auth.admin import UserAdmin
此语句实际上使用的是Django的contrib.auth
应用程序中的User
模型。该用户模型没有Id\u卡号
,因此我认为这就是导致您看到的错误的原因。注意上面链接的资源中的步骤5-它将告诉您如何在admin.py
中为CustomUser
模型设置内容
我假设您的
模型.py
在一个名为用户
的应用程序中(这就是您在验证用户模型
声明中所说的)。与其将User
基于forms.ModelForm
,不如将其基于AbstractUser
或AbstractBaseUser
您已经开始创建自定义用户模型,但尚未完全遵循。是学习创建自定义用户模型的好资源,下面是创建自定义用户模型的快速概述(我建议继承自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\u USER\u模型
简单地复制了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(), ...)
或
另外,在admin.py
您的声明中:
from django.contrib.auth.admin import UserAdmin
此语句实际上使用的是Django的contrib.auth
应用程序中的User
模型。该用户模型没有Id\u卡号
,因此我认为这就是导致您看到的错误的原因。注意上面链接的资源中的步骤5-它将告诉您如何在admin.py
中为CustomUser
模型设置内容
您可以尝试以下操作:
AUTH\u USER\u MODEL='users.apps.USER'
。现在它给了我value错误:无效的模型引用'users.apps.USER'。字符串模型引用必须是“app_label.ModelName”形式。
有人回答吗?我认为在您的用户模型中,您应该扩展django模型,如:类用户(models.model):
并在您的forms.py文件中使用此模型。您需要在安装的应用程序中声明它,然后再django.contrib.admin
您可以尝试以下操作:AUTH\u USER\u model='users.APPS.USER'
。现在它给我值错误:无效的模型引用'users.APPS.USER'。字符串模型引用必须是“app_label.ModelName”形式。
有人回答吗?我认为在您的用户模型中,您应该扩展django模型,如:类用户(models.model):
并在您的forms.py文件中使用此模型。您需要在安装的应用程序中声明此模型,然后再django.contrib.admin
在何处写入user=models.ForeignKey('CustomUser',…)
以及在get\u user\u model
和上述两个文件中的点中写入什么?我不明白。这个。。。被称为省略号,用来表示被省略的单词。在我放置省略号的地方,您必须在_delete=上为指定一个值,例如,您可以选择放入help\u text=“some help text”
。省略号只是表示附加单词的位置。user=models.ForeignKey(…)
将是模型上的一个字段。我只是向你展示了不同的写作方法。我更新了答案,以更清楚地显示不同的方式。在哪里写user=models.ForeignKey('CustomUser',…)
,以及在get\u user\u model
和上面的两个点中写什么?我不明白。这个。。。被称为省略号,用来表示被省略的单词。在我放置省略号的地方,您必须在_delete=
上为指定一个值,例如,您可以选择放入help\u text=“some help text”
。省略号只是表示附加单词的位置。user=models.ForeignKey(…)
将是模型上的一个字段。我只是向你展示了不同的写作方法。我已经更新了答案,以更清楚地显示不同的方式。