2011-12-05 25 views
2

我想以Django格式插入標題。我有以下字段:但以Django格式插入標題

Name 
Price 

Optional - Size 
Optional - Color 

,而不是具有「可選 - 」在每一個可選項目,我想一個標題,所以形式如下:

Name 
Example 

Optional fields: 
Size 
Color 

(這是僞代碼,但應該很容易說明我的觀點)

我知道我可以在HTML中呈現每個單獨的表單字段,但是我仍想使用{{form.as_p}}(所以我不必更改我想添加的每個新字段的標記)。有沒有什麼辦法可以爲表單定義一個Django屬性,這樣我就可以保留form.as_p,並且還有這個額外的頭文件(以及更多字段的更多頭文件)?

謝謝

+0

對於另一種選擇,請參閱我的答案在http://stackoverflow.com/a/24209246/362702 –

回答

2

那麼,對於缺乏一個更好的選擇,我通過渲染表單的各個字段而不是整個表單來解決此問題。

然後我只需要做:

<div class="fieldWrapper"> 
    (...Field 1...) 
</div> 

<h1>My Own Header</h1> 

<div class="fieldWrapper"> 
    (...Field 2...) 
</div> 
2

我認爲Django的有沒有這樣的功能,但django-uni-form具有:)這是uni-form documentation有小的變化爲例:

from uni_form.helper import FormHelper 
from uni_form.layout import Layout, Fieldset 

class ExampleForm(forms.Form): 
    [...] 
    def __init__(self, *args, **kwargs): 
     self.helper = FormHelper() 
     self.helper.layout = Layout(
      Fieldset(
       'name', 
       'price' 
      ), 
      Fieldset(
       'Optional', 
       'size', 
       'color' 
      ), 
      ButtonHolder(
       Submit('submit', 'Submit', css_class='button white') 
      ) 
     ) 
     return super(ExampleForm, self).__init__(*args, **kwargs) 
+0

隨着使用Django提供的表單和表單字段當前的行爲,這是幾乎不可能配置表單對象定製根據需要呈現渲染。 django-uni-form,otoh,使這一切立即成爲可能。 –

1

我用jQuery做它。 這很簡單。

$('#id_size').parent().parent().before('<h1>optional</h1>');