修改默认用户模型后Django管理面板无法使用

2 投票
1 回答
745 浏览
提问于 2025-04-16 09:37

我在尝试扩展用户资料的时候,找到了几种解决方案,但最推荐的办法是创建一个新的用户类,这个类里包含一个指向原来的django.contrib.auth.models.User类的外键。我按照这个方法做了,所以在我的models.py文件里有:

class UserProfile(models.Model):
    user = models.ForeignKey(User, unique=True)
    website_url = models.URLField(verify_exists=False)

然后在我的admin.py文件里:

from django.contrib import admin
from someapp.models import *
from django.contrib.auth.admin import UserAdmin

# Define an inline admin descriptor for UserProfile model
class UserProfileInline(admin.TabularInline):
    model = UserProfile
    fk_name = 'user'
    max_num = 1

# Define a new UserAdmin class
class MyUserAdmin(UserAdmin):
    inlines = [UserProfileInline, ]

# Re-register UserAdmin
admin.site.unregister(User)
admin.site.register(User, MyUserAdmin)

现在,当我在管理面板中尝试创建或编辑用户时,出现了一个错误:"Unknown column 'content_userprofile.id' in 'field list'",其中content是我的应用名称。

我尝试在settings.py中添加AUTH_PROFILE_MODULE = 'content.UserProfile'这一行,但没有效果。

我该如何告诉管理面板,让它知道如何正确显示用户表单中的字段呢?

1 个回答

2

经过一些努力,我找到了一个可行的解决方案:

  1. 需要设置 AUTH_PROFILE_MODULE = 'content.UserProfile'
  2. 请删除你的数据库(auth_user 和 yourapp_userprofile 这两个表就够了)
  3. 最后运行 python manage.py syncdb

撰写回答