为什么django可能不会创建manage.py sql指定的数据库列

时间:2012-05-27 04:42:24

标签: database django

我正在尝试创建一个应用,其中所有数据都属于一个用户,用户只能获取自己的数据(例如电子邮件)。我在models.py文件中对此进行建模,如下所示:

from django.contrib.auth.models import User
from django.db import models
...

class Foo(models.Model):
    owner=ForeignKey(User, related_name='foos')

似乎工作正常。

python manage.py sql appFoo

显示包含

的sql
CREATE TABLE "appFoo_foo" (
    "id" integer NOT NULL PRIMARY KEY,
    "owner_id" integer NOT NULL REFERENCES "auth_user" ("id")
    ...

但是,当我尝试使用

删除我为测试目的而创建的用户时,会出现问题
User.objects.exclude(username='root').delete()

并使用内置的django管理应用程序。在任何一种情况下,我都收到一个数据库错误,说表appFoo_foo没有名为owner_id的列。这是在运行syncdb之后。有关为什么会发生这种情况的任何想法?

1 个答案:

答案 0 :(得分:0)

我发誓在问这个问题之前我找了相关的问题,但是在我问到它之前我没有看到Database error : no such column: connect_connect.reciever_id。我的问题是一样的。基本上,我在我的模型中添加了一个字段,并期望syncdb相应地修改数据库,但显然它没有。我不得不跑

manage.py reset appFoo

再次跟随syncdb,它就像一个魅力。

编辑:我刚才读到不推荐重置,你可以改用flush。