修改默认用户模型后Django管理面板无法使用
我在尝试扩展用户资料的时候,找到了几种解决方案,但最推荐的办法是创建一个新的用户类,这个类里包含一个指向原来的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
经过一些努力,我找到了一个可行的解决方案:
- 需要设置
AUTH_PROFILE_MODULE = 'content.UserProfile'
- 请删除你的数据库(auth_user 和 yourapp_userprofile 这两个表就够了)
- 最后运行
python manage.py syncdb