我有一個從模型Object繼承的模型ThreadedComment。 ThreadedComment沒有自己的唯一主鍵,依賴於Object的主鍵(「ID」)。這是該模型是如何構建的:Django在遷移到1.2.5後測試失敗 - 子模型的主鍵問題
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,但是當我升級到1.2.5的Django(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...
問題是用「sqlflush」命令生成並執行SQL文件。有問題的行是:
SELECT setval(pg_get_serial_sequence('"threadedcomments_threadedcomment"','id'), 1, false);
這顯然失敗,因爲該表中沒有「id」列。
什麼是野趣,Django的1.2.3版本產生相似的輸出:
SELECT setval('"threadedcomments_threadedcomment_id_seq"', 1, false);
但測試的推移反正所以我沒有注意到之前的問題。
我在這裏做錯了什麼?模型定義是否不正確,即,我是否需要在線索評論中有一個主鍵,即使我不需要它與對象具有一對一的關係?那麼它是如何從1.0到1.1一直工作到1.2.3,現在又在1.2.5中突破的呢?
+1良好的工作跟蹤下來。 – 2011-04-19 22:26:25
這似乎仍然是Django 1.4.3的一個開放的bug。 – Erik 2013-01-03 05:15:10