顯然,默認的用戶模型不適用於我,也未對其進行擴展,因此決定將AbstractUser
模型設置爲使用現有的表格。從Django的默認用戶模型切換到AbstractUser模型後,Admin正在查找Users_groups表
幾乎必須一切工作,除非我去編輯Django管理用戶,我得到一個錯誤:
ProgrammingError at /adminauthentication/user/100826/change/
(1146, "Table 'test_db.Users_groups' doesn't exist")
不知道爲什麼它正試圖找到這個表,因爲我還沒有指定它,不記得在需要指定它的文檔中,並且認爲AbstractUser
將使用由初始migrate
(例如auth_group
或其他)創建的其他默認表。
不太清楚如何解決,但我正在研究它。
# ./admin.py
from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
from .models import User
admin.site.register(User, UserAdmin)
# ./models.py
from django.db import models
from django.contrib.auth.models import AbstractUser
# Create your models here.
# Extend the User model
class User(AbstractUser):
id = models.AutoField(primary_key=True)
username = models.CharField(max_length=255, blank=False, null=False, unique=True)
first_name = models.CharField(max_length=255, blank=True, null=True)
last_name = models.CharField(max_length=255, blank=True, null=True)
email = models.CharField(max_length=255, blank=True, null=True)
phone = models.CharField(max_length=255, blank=True, null=True)
password = models.CharField(max_length=255, blank=True, null=True)
ip_whitelist_1 = models.CharField(max_length=32, blank=True, null=True)
ip_whitelist_2 = models.CharField(max_length=32, blank=True, null=True)
ip_whitelist_3 = models.CharField(max_length=32, blank=True, null=True)
last_login = models.DateTimeField(blank=True, null=True)
password_changed = models.DateField(blank=True, null=True)
security_q1 = models.CharField(max_length=255, blank=True, null=True)
security_q2 = models.CharField(max_length=255, blank=True, null=True)
security_a1 = models.CharField(max_length=255, blank=True, null=True)
security_a2 = models.CharField(max_length=255, blank=True, null=True)
is_superuser = models.IntegerField(db_column='role', blank=False, null=False, default=0)
login_unlock_date = models.DateTimeField(blank=True, null=True)
challenge_unlock_date = models.DateTimeField(blank=True, null=True)
is_active = models.SmallIntegerField(db_column='active', blank=False, null=False, default=0)
updated = models.DateTimeField(blank=True, null=True)
date_joined = models.DateTimeField(db_column='created', blank=True, null=True)
is_staff = models.SmallIntegerField(blank=False, null=False, default=0)
REQUIRED_FIELDS = [
'first_name',
'last_name',
'email',
]
USERNAME_FIELD = 'username'
class Meta:
db_table = 'Users'
您是否刪除數據庫並在切換到新模型時重新創建所有遷移?據記載,遷移系統在從內置用戶遷移到替代用戶方面效果不佳。 –
刪除了與Django相關的表格,並開始從項目中的任何相關文件複製新項目。是的,是按照文檔更改爲自定義模型中項目的問題:https://docs.djangoproject.com/en/1.11/topics/auth/customizing/#changing-to-a-custom-user-model -mid項目。由於'AbstractUser'主要使用默認的用戶設置,並且它們都使用最初的'migrate'創建相同的表格,所以似乎只是使用默認用戶我也會碰到這個問題,因爲它應該一直在尋找同一張桌子(我會想)。 – sockpuppet