我在django中定义了一个新模型。它看起来像这样:
class User(models.Model):
email = models.EmailField(primary_key=True)
REQUIRED_FIELDS = []
USERNAME_FIELD = 'email'
is_anonymous = False
is_authenticated = True
我已经将它包含的应用程序注册到设置中.py
INSTALLED_APPS = [
# 'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'lists',
'accounts', # <-- this
]
我已经刷新了数据库,运行了migrate --run-syncdb
,重新进行了迁移和迁移。这样我在运行服务器时就不会有任何you have un-applied migrations
消息。
然而,django.db.utils.OperationalError: no such table : accounts_user
仍然存在。
我用过shell,它也会抛出错误:
>>> from accounts.models import *
>>> User
<class 'accounts.models.User'>
>>> User.objects
<django.db.models.manager.Manager object at 0x7fbcbea35ef0>
>>> User.objects
<django.db.models.manager.Manager object at 0x7fbcbea35ef0>
>>> User.objects.all()
Traceback (most recent call last):
django.db.utils.OperationalError: no such table: accounts_user
我已经用尽了我所知道的所有其他选择。
当遇到这样的错误时,有人能为要检查的事情提供一个通用的检查列表吗(无论多么愚蠢(?
这是我的常规检查列表
-
检查迁移文件是否正确生成。在您的情况下,请确认迁移是在帐户/迁移和版本下生成的
-
如果生成不正确,则使用
python manage.py makemigrations
再次生成并再次迁移python manage.py migrate
-
如果正确,请查看django_migrations表。
SELECT "_rowid_",* FROM "main"."django_migrations" ORDER BY "_rowid_" ASC
并确认相应的accounts_user迁移文件已执行。
在我的情况下,我不得不重新创建整个数据集。
我不得不手动删除sqlite文件并重新创建它。在那之后,错误就消失了。
也可以从manage.py
中完成。