2010-10-28 92 views
0

我剛剛開始研究django項目(同時學習django),並且遇到了一些設計問題,我無法用我有限的知識來回答,所以我決定去問問它這裏。無論如何這裏的問題: 1)你會在哪裏把原始查詢。將行查詢放入view.py文件可以嗎?我個人的意見是隻將它們放在models.py文件中。 2)你在哪裏可以查詢數據庫?你可以在models.py,views.py,模板中調用查詢方法嗎?我認爲他們應該在models.py或views.py中,但不在模板中。特別是像「MyModel__attribute_set__all」的調用不應該在模板中使用。Django項目設計問題

因爲我是django(和python)的新手,所以我不確定我是否對此有正確的想法。我很欣賞任何反饋。

回答

2

聽起來你已經走上了一條很好的道路。

我嘗試:

  • 保留我的意見渺茫,在代碼方面,我的模型脂肪
  • 讓我的模板,甚至更薄,免費數據庫查找的;如果我必須做一些點擊數據庫的東西,因爲某些原因在視圖中不可行,我可以通過模板標籤或過濾器來實現,以便它可以改進和/或緩存,並且也很容易找到,並且是枯燥的可
  • 定義和使用它的
0

會在哪裏你把原始查詢模型執行任何原始的SQL。將行查詢放入view.py文件可以嗎?

查詢最常見於view.py;是的,在那裏沒關係。

我個人的意見是隻把它們放在models.py文件中。

如果您使用相同的查詢很多,然後創建模型的「經理」。你會把非常常用的querys放在那裏。只有在那裏纔會讓自己難過。

你可以在哪裏查詢數據庫?

通常在views.py;在models.py中並不罕見。

你可以在...模板中調用查詢方法嗎?

從技術上講,這是可能的,但在邏輯上,非常強烈地不鼓勵。

我認爲他們應該在models.py或views.py但不是在模板

我同意。

+0

我不相信第一個。我認爲我們不應該在視圖中使用原始查詢,這是爲什麼:原始查詢是我們在不控制django框架的情況下查詢db的特殊情況。例如,如果我們想要更改數據庫實現,那麼必須檢查這些查詢是否與新後端兼容。另外,由於它們直接在db上運行,我們可能需要在代碼中添加額外的異常處理。如果這些查詢與我們的django代碼分開,我們可以輕鬆地進行這些驗證而不影響其他代碼。再說一遍,如果只有其中的幾個,他們可能會好起來 – yilmazhuseyin 2010-10-29 18:52:53

+0

我很高興地同意。我對誤會深表歉意。你用「原始」,然後「行」這個詞,所以我感到困惑。我從來沒有找到原因使用「原料」 - 我甚至不知道它存在(新的1.2)。我不使用它,我認爲情況必須非常極端以證明它的正確性,但顯然有人已經找到了需要。很高興知道它在那裏,我可能會回到使用「Q」,然後訴諸生。 – 2010-10-29 22:07:42