我有一個Django 1.3.3應用程序。我被要求爲其添加「促銷代碼」類型的功能。基本上當用戶註冊這個產品(注意:不是在系統的用戶註冊時),他們可以輸入一個促銷代碼(如果他們有一個),它會給他們幾天的免費。促銷代碼與Django模型
在給出這個要求之前,我把這個產品的註冊頁作爲一個簡單的ModelForm。我已經對模型進行了必要的更改,並且已將「成員」模型的外鍵字段添加到新的促銷模型中。
- ID(整數)
- promo_code models.CharField(MAX_LENGTH = 20)
NUMBER_OF_DAYS = models.IntegerField()
def __unicode__(self): return u'{}'.format(self.promo_code)
當將其添加到形式,它給了我一個包含所有促銷代碼的下拉框。但是,那不是我想要的。我希望他們必須擁有代碼並將其輸入到文本框中。然後作爲表單驗證的一部分,看看它是否是有效的代碼。記住,他們可能根本沒有代碼(所以我不希望他們只是從列表中選擇)。
用Django ModelForm實現這種需求的最佳方式是什麼?
注意:我知道我可以備份並擁有完全自定義的表單,但我已經使用ModelForm工作,並且只需要添加此功能。
如果錯誤,請糾正我,如何製作促銷代碼主鍵和使用促銷代碼字段的自定義文本框小部件。 – nims 2013-02-27 18:35:51
@nims我喜歡這個想法。它會導致數據庫中出現一些膨脹(成員表中的int vs varchar),但它不需要兩個字段以及promo_code上的唯一索引。 – 2013-02-27 21:31:35
@nims我實施了您推薦的解決方案。如果你將它寫成答案,我會給你信用的。 – 2013-02-28 01:38:48