2015-09-08 39 views
0

我正在嘗試使用django的contenttypes庫,並且發現了一些奇怪的東西。爲什麼django ContentType標識符會更改?

以下行:對於依賴於當它被稱爲我的每個模型的

for content_type in ContentType.objects.all(): 
    print "%s: %s" % (content_type.id, content_type.model) 

印刷不同的ID。

當我運行測試套件,首先它打印此:

Creating test database for alias 'default'... 

這似乎重新索引一切並打印此:

1: logentry 
2: permission 
3: group 
4: user 
5: contenttype 
6: session 
7: concepttag 
8: difficultytag 
9: questiontypetag 
10: questionformattag 
11: sharedassetconcepttag 
12: curriculumtag 
13: tagtagrule 
14: objecttag 

1: logentry 
2: permission 
3: group 
4: user 
5: contenttype 
6: session 
12: tagtagrule 
15: concepttag 
16: difficultytag 
17: questiontypetag 
18: questionformattag 
19: sharedassetconcepttag 
20: curriculumtag 
21: objectposition 
22: usermediaimage 
23: objecttag 

但隨後該消息後

這是怎麼回事?

回答

3

好像在一審打印代碼運行太早的過程中,默認的數據庫連接已被交換給Django的測試運行測試數據庫之前...

Creating test database for alias 'default'...

消息意味着Django的創造,將通過所有的測試

則可以使用獨立的數據庫時打印的代碼再次運行你看到的內容作爲測試數據庫

不同的順序和內容的不連續的IDS在你的類型默認數據庫反映了您在開發過程中從項目中添加(刪除)模型的順序

在測試數據庫中看到的連續ID序列反映了它查看所有當前模型併爲其創建內容類型的事實在一個新鮮的空分貝

你應該絕對不是期待你的內容類型在你的測試(或你的項目代碼)中有特定的id值。您應該通過查詢modelapp_label來檢索內容類型。

相關問題