我有一个模型(在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 syncdb
,manage.py makemigrations
,manage.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并逐个删除表?
答案 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
这可以解决您的问题。