- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我已经为非常简单的博客应用编写了几个测试,但是当我运行测试时多对多关系失败了:./manage.py test myblog
DatabaseError: no such table: myblog_post_tag
然而,当我执行 ./manage.py sql myblog
时:
BEGIN;
CREATE TABLE "myblog_tag" (
"id" integer NOT NULL PRIMARY KEY,
"name" varchar(50) NOT NULL
)
;
CREATE TABLE "myblog_post_tag" (
"id" integer NOT NULL PRIMARY KEY,
"post_id" integer NOT NULL,
"tag_id" integer NOT NULL REFERENCES "myblog_tag" ("id"),
UNIQUE ("post_id", "tag_id")
)
;
CREATE TABLE "myblog_post" (
"id" integer NOT NULL PRIMARY KEY,
"title" varchar(200) NOT NULL,
"pub_date" datetime NOT NULL,
"content" text NOT NULL
)
;
COMMIT;
它确实创建了一个表,但在测试时却没有这样做?任何帮助表示赞赏。这是我的测试:
class TagModelTest(TestCase):
def test_create_tags_for_posts(self):
# tests tagging posts, postodd will have tags 1 & 3, posteven will be 2 & 4
postodd = Post(
title="testing odd tags",
pub_date=timezone.now(),
content='''hello everybody, we are testing some tagging
functionality here. This post should have odd tags.''',
)
posteven = Post(
title="test even tags",
pub_date=timezone.now(),
content ='''hello everybody, we are testing some tagging
functionality here. This post should have even tags.''',
)
#save them to db
postodd.save()
posteven.save()
# create the tags
tag1 = Tag(name="1")
tag2 = Tag(name="2")
tag3 = Tag(name="3")
tag4 = Tag(name="4")
# save all tags to db
tag1.save()
tag2.save()
tag3.save()
tag4.save()
# create the many2many relationship
postodd.tag.add(tag1)
如果需要,还有我的 models.py:
from django.db import models
class Tag(models.Model):
name = models.CharField(max_length=50)
def __unicode__(self):
return self.name
class Post(models.Model):
tag = models.ManyToManyField(Tag)
title = models.CharField(max_length=200)
pub_date = models.DateTimeField(verbose_name="Date published")
content = models.TextField()
def __unicode__(self):
return self.title
最佳答案
./manage.py sql myblog
不执行 SQL,它只是输出如果您运行 syncdb
将执行的内容。
在这种情况下,您的数据库中似乎缺少该表。
如果这是对现有应用进行修改的结果;例如,您刚刚向模型添加了一个新字段;然后运行 syncdb
不会影响对数据库的更改。 syncdb
不执行任何破坏性操作(如添加或删除表或列)。
在这种情况下,您可以手动运行查询来添加列;或使用 syncdb
删除并重新创建您的表。
由于这是一个常见问题,大多数人使用数据迁移工具,如 south
为您处理这些变化。 South 将智能地管理这些小的变化。
关于python - Django 测试 : DatabaseError: no such table for ManyToManyField,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12151988/
在启用 SSL 的 postgresql 数据库上使用 celery 时有时会触发标题错误。我在 flask + SQLAlchemy 配置中 最佳答案 正如这里提到的:https://github.
嗨,我有一个使用 Celery Flask SqlAlchemy 的设置,但我间歇性地收到此错误: (psycopg2.DatabaseError) SSL error: decryption fa
我正在尝试在 heroku 上部署一个 flask 应用程序,该应用程序在 Celery 中使用后台任务。我已经实现了 application factory pattern这样 celery 进程就
我的 sqlite db 文件是这样的:无法打开数据库文件 我关闭了所有文件夹,直到我的 dbfile 成为根目录。但我仍然收到此错误。但我记得在服务器上创建我的 django 项目时,我创建了一个
我有一个数据库模式,可以在各种不同的数据库引擎中实现(假设我将使用 pyodbc 连接到一个 MS Access 数据库,或者我将通过内置的 sqlite3 连接到一个 SQLite 数据库模块作为一
我的 Django 应用程序中有一个 Celery 任务调用函数,它处理 CSV 文件中的每一行,并尝试使用模型将每一行的信息插入到 PostgreSQL 数据库中,如下所示: reader = cs
情况是这样的:我在我的事件表中添加了一个新列(演示者)。我运行了 alter table sql 语句,运行了 python manage.py syncdb。我试图能够选择许多配置文件并将它们存储为
我在使用 Django 1.2.4 时遇到问题。 这是一个模型: class Foo(models.Model): # ... ftw = models.CharField(blank
每次我过滤/排除十进制字段时,我都会收到一条数据库错误消息: "cant' adapt" 这不会发生在我的本地环境中。 我在生产环境中使用 Postgresql 8.3.11,在本地环境中使用 8.4
有没有办法获取相关的表名和列名,而不仅仅是这条消息? django.db.utils.DataError: value too long for type character varying(16)
所以我克隆了我的 repo,找到它的来源,在它的依赖项上运行 pip 并同步我的数据库,只有同步失败: DatabaseError: no such table: django_site 我检查了 s
我正在尝试开发一个迷你购物网站,其中我使用 NodeJs Express 和 MySQL 来完成此操作 我的购物车可以有很多产品,每个产品可以属于多个购物车。 因此使用sequelize,我的关系如下
我已经问过这个问题一次但没有得到答案,我已经阅读了我可以在 Internet 上找到的发生此错误的每个示例,所以我将再次尝试在这里获取更多信息。 我正在尝试:克隆一个远程存储库,然后我将在我的开发机器
我正在设置一个 Django 模型来存储地区,例如美国、德国等。我为表格设置了唯一的地区名称。我有一个从列表中填充数据库的脚本,如果有重复的区域名称 IntegrityError 将按预期抛出,但随后
如何修复 Django 数据库错误。我将 MongoDB 与 Djongo 结合使用。 直到最近我决定添加 NewApp 时,一切都运行良好。每当我尝试迁移时,它都会用 django.db.utils
我正在将 Firebase 实时数据库中的数据调用到 Android 中,但出现以下错误:“W/SyncTree:在/Datas 上监听失败:DatabaseError:权限被拒绝” 我的规则设置为:
我正在尝试使用带有多个处理器的 django-nose 来运行我们的测试套件,以减少运行时间。所有测试通过 1 个处理器,但使用多个处理器会产生 DatabaseError: server close
我正在运行以下代码: db = pymysql.connect(host=host, database=db_name, user=user, password=password) batchsize
我已经为非常简单的博客应用编写了几个测试,但是当我运行测试时多对多关系失败了:./manage.py test myblog DatabaseError: no such table: myblog_
我收到了一个需要用 Python 读取的 sqlite 文件。 我可以使用“DB Browser for SQLite”应用程序打开文件。我可以看到表结构并在该应用程序中执行选择语句。所以文件看起来没
我是一名优秀的程序员,十分优秀!