1

我正在尝试创建一个应用程序,其中所有数据仅属于一个用户,并且用户只使用自己的数据(例如电子邮件)。我在我的 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 之后。关于为什么会发生这种情况的任何想法?

4

1 回答 1

0

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

manage.py reset appFoo

其次是syncdb,它就像一个魅力。

编辑:我刚刚读到 reset 已被弃用,您可以使用 flush 代替。

于 2012-05-27T04:50:13.253 回答