var*_*esa 11 python database django django-models
我定义了两个模型:
class Server(models.Model):
owners = models.ManyToManyField('Person')
class Person(models.Model):
name = models.CharField(max_length=50)
admin.site.register(Server)
admin.site.register(Person)
Run Code Online (Sandbox Code Playgroud)
之后我甚至检查了sql,只是为了好玩:
BEGIN;
CREATE TABLE "servers_server_owners" (
"id" integer NOT NULL PRIMARY KEY,
"server_id" integer NOT NULL,
"person_id" integer NOT NULL,
UNIQUE ("server_id", "person_id")
)
;
CREATE TABLE "servers_server" (
"id" integer NOT NULL PRIMARY KEY,
"name" varchar(50) NOT NULL,
"port" integer unsigned NOT NULL,
"state" integer NOT NULL
)
;
CREATE TABLE "servers_person" (
"id" integer NOT NULL PRIMARY KEY,
"name" varchar(50) NOT NULL
)
;
COMMIT;
Run Code Online (Sandbox Code Playgroud)
它甚至说 CREATE TABLE "servers_server_owners"
我跑去syncdb安装新模型到数据库.我去管理界面定义了一些要玩的对象,但是我收到了以下错误:
DatabaseError at /admin/servers/server/1/
no such table: servers_server_owners
Run Code Online (Sandbox Code Playgroud)
我关闭dev-server,syncdb再次运行,启动服务器:仍然是同样的问题.为什么它不能找到,即使它只是告诉我它创建了id?
实际上问题是表永远不会被创建.由于我是django的新手,我不知道./manage.py syncdb它不会更新现有的模型,只会创建不存在的模型.
因为模型"服务器"在添加其他模型之前就存在了,并且它已经在数据库中,所以"syncdb"实际上并没有创建新表.
| 归档时间: |
|
| 查看次数: |
27154 次 |
| 最近记录: |