2016-02-26 204 views
3

我手動顯示我的formset作爲表,每個表單都循環。在每一個底部形態包括我喜歡的隱藏字段:django modelform屬性隱藏字段

{% for hidden in form.hidden_fields %} 
    {{ hidden }} 
{% endfor %} 

但問題是,我也包括像在我的窗體屬性:

class AllocationForm(forms.ModelForm): 
    name = forms.CharField(widget=forms.TextInput(attrs={'size': '15'})) 

    def __init__(self, *args, **kwargs): 
     super(AllocationForm, self).__init__(*args, **kwargs) 
     if self.instance: 
      self.fields['total_budgeted'] = self.instance.total_budgeted() 
      self.fields['total_budgeted_account_percent'] = self.instance.total_budgeted_account_percent() 
      self.fields['actual_spent'] = self.instance.actual_spent() 
      self.fields['actual_spent_account_percent'] = self.instance.actual_spent_account_percent() 
      self.fields['total_budgeted_category_percent'] = self.instance.total_budgeted_category_percent() 
      self.fields['actual_spent_category_percent'] = self.instance.actual_spent_category_percent() 

    class Meta: 
     model = Allocation 
     exclude = {'created', 'modified', 'source_account'} 

而且這部作品在這個意義上,我肯定看到被調用的屬性,但它們顯示爲沒有,所以這是另一個問題。

問題是,當我在模板中保留隱藏的字段時,我將得到錯誤,如'int'對象沒有屬性'get_bound_field'等,這取決於屬性/方法調用的返回類型。

我的問題是第一:有沒有檢查我可以做,看看該字段是模板中的屬性,因此跳過它? 它可能與我如何使用該屬性有關,因爲實際上每個屬性都沒有顯示任何東西(但我看到它回調),因此將關於如何顯示屬性。

回答

4

嗯,我在這個問題的下一步,但我已經成功地在生成真正的表單域。在地方:

if self.instance: 
    self.fields['total_budgeted'] = self.instance.total_budgeted() 

你可以寫:

if self.instance: 
    self.fields['total_budgeted'] = form.CharField(
     initial=self.instance.total_budgeted(), 
     widget=HiddenInput() 
    ) 

在這段代碼中,你我實例化表單字段爲CharField,你可以使用你想要的FormField,我通過選擇隱藏隱藏輸入小部件。