2012-06-25 61 views
1

我有一個Django模型,我希望表示某些模型字段是私有的,這樣當我顯示基於此模型的ModelForm時,我可以顯示標記爲這樣的字段。Django模型字段元數據

我想這是在模型上而不是形式上指定的,因爲我認爲它屬於它的位置。

我想知道做這件事的最好方法是什麼。我可以寫一個裝飾器@私人做這件事嗎?任何人都可以指出我的一個例子嗎?

感謝

+3

我會爭辯說,因爲它與如何顯示錶單有關,所以它屬於表單 - 並且使用'排除'元類屬性在Django中的表單中執行此操作非常簡單。 如果您想在模型中執行此操作,您可能需要對ModelForm進行子類化,以更改從模型創建表單的方式,以考慮您的新裝飾器。 –

+1

只是爲了擴大伊恩的答案。您可以使用'exclude'或'fields'來控制您想要爲模型顯示的內容。在django/view上下文中,裝飾器的用例通常用於在讓用戶訪問視圖之前要檢查的內容,例如他是否已登錄或者是否具有某些權限。 – super9

+0

嗨。我已經意識到並使用'exclude'和'fields'來顯示一個字段子集,這一切都很好,但在這些字段中,我需要告訴用戶有些將公開顯示,有些則不會。我不同意這屬於形式,因爲我也可以用它來以編程方式決定我應該向其他用戶顯示哪些字段,例如,誰不是所述用戶的朋友。 – Ludo

回答

1

有沒有一個功能,完全符合您的問題,但這裏有幾個建議:

  • 的信息添加到模型的元類,你可以從你的形式通過,然後訪問模型上的_meta屬性
  • 在您的模型字段上使用help_text選項(顯然,這不會幫助您「以編程方式決定我應該向其他用戶顯示哪些字段」)

我確實同意這是否屬於模型層是值得商榷的;這對我來說似乎是商業邏輯。