2012-09-26 62 views
5

我有一個創建一個字段的隱藏輸入自定義表單:如何隱藏自定義django表單中的django標籤?

class MPForm(forms.ModelForm): 
    def __init__(self, *args, **kwargs): 
     super(MPForm, self).__init__(*args, **kwargs) 
     self.fields['mp_e'].label = "" #the trick :) 

class Meta: 
    model = MeasurementPoint 
    widgets = { 'mp_e': forms.HiddenInput() } 
    exclude = ('mp_order') 

我必須做這個小動作「隱藏」的標籤,但我想要做的就是從表單中刪除它。我創建這樣的形式:

forms.MPForm() 
+2

另外,不要忘記'exclude'元組中的尾隨逗號。它應該是'exclude =('mp_order',)' – Alasdair

回答

14

我不建議刪除標籤,因爲它使表單無法訪問。你可以將add a custom CSS class發送到現場,並在你的CSS make that class invisible

編輯

我錯過了輸入被隱藏起來的無障礙不是一個問題。

您可以在模板中直接呈現的表單字段:

<form ...> 
    {% for field in form.hidden_fields %} 
     {{ field }} 
    {% endfor %} 

    {% for field in form.visible_fields %} 
     {{ field.label }} {{ field }} 
    {% endfor %} 
</form> 
+0

它只是一個控制隱藏輸入,我不需要標籤,我將這個隱藏的輸入用作一個標記。 – Harchet

+0

好吧,我錯過了該領域是一個隱藏的領域。對不起,我會編輯上面的答案。 –

+0

我認爲這是做到這一點的最佳方式,但他們應該實施一種刪除表單中的標籤的方法... 謝謝! – Harchet

0

除非我誤解你的問題,你只需要在mp_e字段添加到排除的元組的元級之下。這不是你需要的嗎?

class MPForm(forms.ModelForm): 
    def __init__(self, *args, **kwargs): 
     super(MPForm, self).__init__(*args, **kwargs) 

    class Meta: 
     model = MeasurementPoint 
     exclude = ('mp_order','mp_e') 
+0

不,我需要一個隱藏的輸入,我不需要的是它前面的標籤。 – Harchet

+0

那麼Alasdair的回答是正確的。 – joeButler

5

如果使用form.as_pform.as_table方法,Django的不應該爲你的隱藏字段中顯示的標籤,無論如何,所以沒有必要改變標籤在你__init__方法。

{{ form.as_table }} 

如果你是customizing the form template,你可以使用field.is_hidden屬性來檢查該字段是否是隱藏的。

{% if field.is_hidden %} 
    {# Don't render label #} 
{% endif %} 

或者,您可以loop over hidden and visible fields separately,並省略隱藏字段的標籤。

+0

問題是我想使用沒有任何定製的表單,只是改變form.py中的東西,但它看起來不可能做到這一點 – Harchet

+0

正如我上面所說,** Django不會顯示標籤隱藏字段默認**。您不需要更改'__init__'方法中的標籤。如果標籤正在顯示,那麼你在你的視圖或模板中做了一些你沒有包括在你的問題中的東西。 – Alasdair