您不需要閱讀所有這篇文章以幫助我回答問題,本文的其餘部分僅僅是問題出現的上下文,但一般問題是:何處放置商業邏輯,跨越Django中的多個模型
在哪裏把商業邏輯,跨越多個模型在Django?
一些posibilites:
- 一些視圖? (我不這麼認爲,它必須在管理和若干意見的工作,DRY)
- 模型/表格保存方法是什麼?(如何?)
- 清潔methos模型/表格?(如何?)
- 拆分邏輯和使用信號?(如何?)
- 其他?
語境:
我有這個型號:
- 部:在公司引用不同的部門(風險,金融,IT,...)
- 員工:五月一段時間只屬於一個部門,然後更換爲其他部門。
- 項目:每個部門可以有多個項目,一個項目屬於多個部門。
- 成員:員工和部門多對多的關係,其中包括其他領域,如join_date和leave_date之間的中間表,重要的領域是FK:部門,FK:員工
- 歷史:成員和項目之間的中間表,讓我知道哪個員工參與了他在某個部門工作的願望項目,重要的領域是fk:會員,fk:項目。
- CurrentProjects:當前將部門與其正在處理的項目相關聯的表。
supose我在Django管理員,我去部門風險,風險目前Proyect1和Project2簽署。當我添加一個新員工「JHON史密斯」(例如,使用系內聯形式),然後按保存按鈕,我想要的模型歷史被用該信息更新:
Membership table (only important fields): pk Department Employee join_date leave_date 20 Risk Jhon Smith xxxx xxxx History Table (only important fields): Membership Project 20 Project1 20 project2
我的意思是,當一個新的員工被分配到一個新的部門,該部門的所有實際項目必須被分配到表歷史記錄中的該成員資格員工部門。
問題是在Django中放置這個邏輯的地方?你可以看到這個邏輯涉及倍數的機型,有些posibilities是:
- 在一些視圖(我不這麼認爲,它必須在管理interfase和在其他地方工作)
- 在的清潔方法會員,部門或員工模型/表單?
- 在會員,部門或員工模型/表單的保存方法中?
- 我必須拆分邏輯並使用類似信號的東西嗎? (一些例子?)
- 其他?
- 我過了複雜的永恆? =)
注意事項:如果代碼可能在進程中的任意位置生成valueerror並且用戶/管理員能夠以無界形式查看此錯誤,那將會很好。
謝謝
您是否探索過信號? – jdi 2012-07-07 21:37:17
@jdi我現在正在審查這個主題,但是你對如何在這種情況下使用它們有一些見解嗎? – javier 2012-07-07 21:52:53
看到我的答案。我談論這個。 – jdi 2012-07-07 22:07:31