2010-07-27 87 views
1

我有一個外鍵引用,它顯示爲客戶端上的選擇框,但它已預先填充值。我希望選擇框在顯示時爲空,因爲它將由Ajax調用填充。刪除外鍵選擇字段中的所有元素

這是我的模型

class RecipeIngredient(models.Model): 
    recipe = models.ForeignKey(Recipe) 
    ingredient = models.ForeignKey(Ingredient) 
    serving_size = models.ForeignKey(ServingSize) 
    quantity = models.IntegerField() 
    order = models.IntegerField() 
    created = models.DateTimeField(auto_now_add = True) 
    updated = models.DateTimeField(auto_now = True) 

,這是我的模型形式

class RecipeIngredientForm(forms.ModelForm): 
    class Meta: 
     model = RecipeIngredient 
     fields = ('ingredient', 'quantity', 'serving_size') 
     widgets = { 
      'ingredient': forms.TextInput(attrs={'class' : 'recipe_ingredient'}), 
      'quantity': forms.TextInput(), 
      'serving_size' : forms.ChoiceField(choices=PLEASE_SELECT, widget=forms.Select()), 
     } 

我希望「serving_size」現場有從數據庫中指定我的選擇,而不是任何數據。顯然,我得到一個錯誤

AttributeError: 'ModelChoiceField' object has no attribute 'to_field_name' 

任何想法?

回答

3

請勿在fields中包含serving_size。請自行添加:

class RecipeIngredientForm(forms.ModelForm): 
    serving_size = forms.ChoiceField(..) 

試試這個,告訴它是否有用。

此外,我相信你不應該把ChoiceField納入widgets,這不是一個部件,而是一個整體領域。

編輯

class RecipeIngredientForm(forms.ModelForm): 
    serving_size = forms.ChoiceField(choices=PLEASE_SELECT, widget=forms.Select()) 

    class Meta: 
     serving_size = forms.ChoiceField(choices=PLEASE_SELECT, widget=forms.Select()) 
     model = RecipeIngredient 
     fields = ('ingredient', 'quantity', 'serving_size') 
     widgets = { 
      'ingredient': forms.TextInput(attrs={'class' : 'recipe_ingredient'}), 
      'quantity': forms.TextInput(), 
     } 
+0

感謝您的答覆。如果我沒有將它包含在域中,它不會顯示在頁面上。我試過這 fields =('成分','數量') serving_size = forms.ChoiceField() – iJK 2010-07-27 22:55:30

+0

我已經添加了一個完整的表單。你已經嘗試過嗎?我很確定這應該起作用。 – gruszczy 2010-07-28 00:15:26

+0

感謝它的工作。如果你不介意你能解釋我們做了什麼嗎?我們剛創建了一個新領域嗎? – iJK 2010-07-28 01:20:23

相關問題