没有这样的表:myAppName_user

时间:2015-08-17 15:14:33

标签: python django python-3.x

我有一个模型(在app中使用名称:services)定义为扩展auth.User,它喜欢:

from django.contrib.auth.models import User
class Order(models.Model):
    owner = models.ForeignKey(User)

我也尝试过:

class Order(models.Model):
    owner = models.ForeignKey('auth.User')

然后我访问管理员页面,点击Order,始终出现错误:

OperationalError 
Exception Value:
no such table: services_user

我尝试了manage.py syncdbmanage.py makemigrationsmanage.py migrate的所有内容,但都无济于事。

似乎Django仍然试图找到自定义用户表,这是我的设置文件,它几乎是Django1.8.3中的默认用户表而没有更改:

INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'rest_framework',
'services',
)
BTW:什么是清空数据库的最佳方法?删除sqlite文件,然后在哪里恢复空的db文件?或者通过sqlshell连接到db并逐个删除表?

1 个答案:

答案 0 :(得分:0)

您需要删除数据库。这可以通过删除sqlite db文件来完成。然后再次创建空数据库。用于创建数据库的第一个安装命令行工具

sudo apt-get install sqlite3

例如,要创建一个名为“ex1”的新SQLite数据库,其中包含一个名为“tbl1”的表,您可以这样做:

$ sqlite3 ex1
SQLite version 3.8.5 2014-05-29 12:36:14
Enter ".help" for usage hints.
sqlite> create table tbl1(one varchar(10), two smallint);
sqlite> insert into tbl1 values('hello!',10);
sqlite> insert into tbl1 values('goodbye', 20);
sqlite> select * from tbl1;
hello!|10
goodbye|20
sqlite>

详情请参阅this

此外,您需要清除所有迁移,然后再次使用

Python manage.py makemigrations

Python manage.py migrate

这可以解决您的问题。