gpt4 book ai didi

django - 数据库错误: no such table: auth_user.扩展AbstractUser并使用模型在管理上注册

转载 作者:行者123 更新时间:2023-12-02 09:42:26 24 4
gpt4 key购买 nike

我正在尝试使用 AbstractUser 将字段添加到 Django 的标准用户模型中。这是我的代码:

class GUser(AbstractUser):
uuid = UUIDField(auto=True)

这是成功的,因为从 shell 中我可以说,

>>> a = GUser.objects.all()

>>> a
[<GUser: User1>]

>>> a[0].uuid
UUID('7d1f0b7b52144a2ea20db81ce74741e3')

我遇到的问题是从/admin 注册新用户。当我创建新用户时,出现数据库错误:

no such table: auth_user

在深入了解之前,这是我的 forms.py:

class GUserChangeForm(UserChangeForm):
class Meta:
model = get_user_model()

class GUserCreationForm(UserCreationForm):

class Meta:
model = get_user_model()

def clean_username(self):
username = self.cleaned_data["username"]
try:
get_user_model().objects.get(username=username)
except get_user_model().DoesNotExist:
return username
raise forms.ValidationError(self.error_messages['duplicate'])

还有我的 admin.py:

class GUserAdmin(UserAdmin):
form = GUserChangeForm
add_form = GUserCreationForm
fieldsets = (
(None, {'fields': [('username', 'password')]}),
('Personal info', {'fields': ('is_active','is_staff','is_superuser','groups', 'user_permissions')}),
('Important dates', {'fields': ('last_login', 'date_joined')}),
#('Universal ID', {'fields': ('uuid')})
)

admin.site.register(GUser,GUserAdmin)

我读到,当其他人发生这种情况时,他们实现了自己的表单(就像我一样)来覆盖 clean_username(self):

但是,当我尝试从管理员添加用户时,我认为这不会被调用。即使我注册了 GUserAdmin,auth.forms.py 文件也会被调用。

此外,当我删除数据库(sqlite3)然后调用 python manage.pysyncdb 时,我发现 auth_user 表实际上并未创建。

是的,我已将 AUTH_USER_MODEL 包含在 settings.py 中。

任何帮助将不胜感激。

我读过: https://docs.djangoproject.com/en/1.5/topics/auth/customizing/#custom-users-and-the-built-in-auth-forms

还有大量的帖子,但似乎没有一个能解决我遇到的问题。

最佳答案

错误可能在于数据库的清零不正确。'数据库错误:没有这样的表:str'

要删除数据库,只删除数据库和迁移包中的所有迁移(如0001_initial.py等)。

不要删除所有迁移包和文件“init.py”。如果您这样做了,请创建它们。 Django 不会再次创建它们。之后,不要记得运行 makemigrations 和 migrate。

关于django - 数据库错误: no such table: auth_user.扩展AbstractUser并使用模型在管理上注册,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17305949/

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