2010-10-11 25 views
2

我正在Django中創建窗體。要顯示的字段是代表某個限制的數字字段。有可能沒有限制。而不是強迫用戶輸入一些奇怪的數字來表示無限(例如-1),我希望有一個單選按鈕,有2個選項:「無限」,第二個選項是用戶可以輸入的文本框價值成。Django - 帶有複選框的窗體部件可以在無限或文本框之間進行選擇

原始模型只有IntegerField可以爲null。空值用於表示無限制。有什麼辦法可以讓這個字段的FormField包含這個複選框的功能?

我知道我可以自己手寫HTML,我想知道是否有一個已經制作好的django字段/小部件會這樣做。

回答

1

您可以讓表單具有複選框的其他表單域。並重寫它的save方法來相應地填充模型字段。或者您可以製作一個自定義表單字段小部件,該小部件可以同時存放HTML輸入字段並從輸入中生成相應的python值,反之亦然。第一種選擇是實現起來更簡單,如果只需要一種形式需要此功能,則更爲明智。無論哪種方式,我會重新考慮使用空值來表示除輸入值以外的任何內容。如果所有其他用戶指定的值只能是正數,則可以使整數字段保持-1表示無限制。或者添加另一個布爾模型字段來保存此複選框的值。

相關問題