2010-02-14 36 views
1

這是一個關於Django項目模式設計的相當快速的問題。Django的月度報告 - 月份強制唯一性?

基本上,我們有來自不同部門的一系列月度報告,這些報告彙總成一個具有一些漂亮圖表的單個報告(我們可能會爲此使用Google Visualization API,但我願意接受其他建議,如果你認爲其他東西很好地與Django集成)。

各部門負責將自己的數據歸檔。我們可能會使用Django管理員輸入這些數字,因爲它不一定非常漂亮,只是每個月都會得到一些數字。

我假設這裏有更好的方法是有一個抽象的報告模型,爲具有單獨模型的每個部門繼承這個,並重寫任何特定的字段,然後在每個模型上都有一個DateField。

有一個月作爲父對象,並從中降低報告 - 這是一個愚蠢的做法,對嗎?

另外,執行它的最好方法是什麼,以便他們只能提交一次數字?我可以有一個單獨的月份和年份字段,我猜想在該字段上實施一個獨特的字段,但我希望使用內置的DateField,但是強制月份和年份唯一性的最佳方法是什麼?我應該使用新的模型驗證功能嗎?

乾杯, 維克多

回答

1

一個Django模型字段可以有一個選項unique_for_monthunique_for_year。該選項的值是模型中的DateTimeDate字段。

E.g.

class Report(models.Model): 
    submit_date = models.DateField() 
    department_id = models.IntegerField(unqiue_for_month=date) 
+0

這似乎是完全不正確的。至少使用sqlite3後端,'unique_for_month'就是指:唯一的月份。如同,在12月投入兩次,管理網站向你吐口水,無論他們的年份不同。 – Jjed

+0

從文檔:「*例如,如果您的字段標題具有'unique_for_date =」pub_date「',那麼Django不會允許輸入兩個具有相同'title'和'pub_date'的記錄。在Django管理員級別執行,但不是在數據庫級別執行。*「因此,每個文檔都應該按預期工作,或者您也可能期望其他內容? –