gpt4 book ai didi

python - 迁移到 1.2.5 后 Django 测试失败 - 子模型的主键问题

转载 作者:太空宇宙 更新时间:2023-11-03 15:27:00 25 4
gpt4 key购买 nike

我有一个继承自模型对象的模型 ThreadedComment。 ThreadedComment 没有自己唯一的主键,依赖于 Object 的主键(“ID”)。这是模型的构建方式:

class Object(models.Model):
permalink = models.CharField(max_length=128)
status = models.IntegerField()
version = models.IntegerField()

class ThreadedComment(Object):
parent = models.ForeignKey('self', null=True, blank=True, default=None, related_name='children')
parent_object = models.OneToOneField(Object, parent_link=True)
# other fields follow

这在 django 1.2.3 之前一直有效,但是当我升级到 django 1.2.5(1.3 有同样的问题)时,当我尝试运行任何测试时会发生这种情况:

Error: Database test_db couldn't be flushed. Possible reasons:
* The database isn't running or isn't configured correctly.
* At least one of the expected database tables doesn't exist.
* The SQL was invalid.
Hint: Look at the output of 'django-admin.py sqlflush'. That's the SQL this command wasn't able to run.
The full error: relation "threadedcomments_threadedcomment_id_seq" does not exist
LINE 1: SELECT setval('"threadedcomments_threadedcomment_id_seq"', 1...

问题在于生成并执行 SQL 文件的“sqlflush”命令。有问题的行是:

SELECT setval(pg_get_serial_sequence('"threadedcomments_threadedcomment"','id'), 1, false);

这显然失败了,因为该表中没有“id”列。

有趣的是,django 1.2.3 版本产生了类似的输出:

SELECT setval('"threadedcomments_threadedcomment_id_seq"', 1, false);

但测试仍在继续,所以我之前没有注意到这个问题。

我在这里做错了什么?模型定义是否不正确,即我是否需要在 threadedcomment 中有一个主键,即使我不需要它与对象具有一对一的关系?为什么它从 1.0 到 1.1 再到 1.2.3 一直运行良好,现在在 1.2.5 中出现故障?

最佳答案

这原来是一个 Django 错误。详情在这里:http://code.djangoproject.com/ticket/12728

这是我们的临时解决方法:https://bitbucket.org/filmaster/filmaster-test/changeset/afbac905cf63

关于python - 迁移到 1.2.5 后 Django 测试失败 - 子模型的主键问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5554390/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com