2012-12-12 206 views
0

我有一個表格:Django的驗證空ModelChoice表單字段

class ProjectInfoForm(forms.Form): 
    module = forms.ModelChoiceField(
     queryset=Module.objects.all(), 
    ) 
    piece = forms.ModelChoiceField(
     queryset=Piece.objects.all(), 
     required=False, 
    ) 

第二字段被填充有來自所述第一使用AJAX選項。然而,像這樣實例化它並不是非常有效,因爲它意味着第二個字段在頁面加載時不會被填充(更不用說在它應該填充之前填充字段)。

所以,我試圖將其更改爲:

... 
    piece = forms.ModelChoiceField(
     queryset=Piece.objects.none(), 
     required=False, 
    ) 

我得到了想要的結果,但過程的形式不驗證了它沒有選擇對證。

有沒有一些方法可以驗證表單而不填充它,甚至更好地驗證這兩個字段作爲相關模型?

任何幫助非常感謝。

回答

1

我認爲更簡單的方法就是推出自己的。您只需要:

  1. A ChoiceField。使用coerce會讓你變換ID添加到對象透明
  2. 你AJAX組件可以查詢檢索有效Piece S的名單給定Module的視圖。
  3. 服務器端驗證方法,用於檢查ModulePiece是否對應