2009-05-30 79 views
0

大家好我有幾個關於django管理員的問題。在Django中創建訂單

首先是相關細節。我目前有客戶端,打印機,盒式磁帶和訂單模型。

打印機型號在墨盒型號上有一個ManyToManyField,它允許您選擇可用於該打印機的所有墨盒。

該客戶有一個ManyToManyField到他們擁有的打印機。

1)我想通過Django管理員創建一個訂單,讓您通過ManyToManyField指定客戶端,一個dicount和多個盒式磁帶。這變得有點棘手,因爲我必須通過另一個表來指定它是新墨盒還是補充墨盒。

2)我希望管理員過濾墨盒以僅顯示屬於他們自己的打印機的墨盒。

3)另外我想要一個可以保存訂單總價格的字段,但它應該根據訂單中已添加的訂單數量來計算。我不知道是否應該通過向訂單添加更多相同的墨盒或通過在相關表中指定數量的其他字段來完成此操作。

這可以在管理員或我需要使用表單嗎?如果是的話,我會如何將這個添加到管理員?這似乎很困難,也許我必須在多個部分完成,因爲爲了過濾我必須事先知道客戶端的磁帶清單。

回答

2

據我所見,不,這是不可能的。開發版本有一些methods for limiting foreign keys,但在我看來,基於客戶的限制是不可能的,因爲它取決於單獨的外鍵。

最好的建議是,如果你真的想在管理員表單中做到這一點,將是使用Javascript來做到這一點。您仍然需要通過AJAX調用來獲取客戶所擁有的打印機列表以及基於該列表顯示哪些磁帶,但可以完成。您只需指定要加載的JS文件the Media class

但我認爲這是值得的更多的工作。我認爲最簡單的方法是使用Form Wizards。這樣,您就可以選擇客戶,以便下一步瞭解要顯示哪些磁帶。

希望有幫助!

1

我工作過類似的問題,得出的結論是,在許多情況下,使用表單編寫自己的管理界面真的比直接嘗試將管理功能插入管理員並非意圖更好到那裏。

就3)而言,這取決於您的產品基地的樣子。如果您可能有客戶訂購了50個相同的小部件,那麼您可能需要一個數量字段。如果客戶更有可能訂購2個小工具,一個爲紅色,一個爲藍色,則將各個項目分別添加到manytomany字段,並將它們分組在您的訂單界面中。