13

フィールドの非表示の入力を作成するカスタムフォームがあります。

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()
4

7 に答える 7

23

フォームにアクセスできなくなるため、ラベルを削除することはお勧めしません。カスタムCSSクラスをフィールドに追加し、CSSでそのクラスを非表示にすることができます。

編集

入力が非表示になっているので、アクセシビリティは問題ではないことを見逃しました。

テンプレートでフォームフィールドを直接レンダリングできます。

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

    {% for field in form.visible_fields %}
        {{ field.label }} {{ field }}
    {% endfor %}
</form>
于 2012-09-26T09:58:20.667 に答える
14

さて、(私のdjangoバージョンは2.1.4です)、この方法で解決できます->forms.pyファイルを編集します:

password = forms.CharField(label=False)
于 2019-02-15T06:46:58.680 に答える
7

form.as_porメソッドを使用する場合form.as_table、Djangoは非表示フィールドのラベルを表示しないはずなので、__init__メソッドのラベルを変更する必要はありません。

{{ form.as_table }}

フォームテンプレートをカスタマイズする場合は、属性を使用しfield.is_hiddenてフィールドが非表示になっているかどうかを確認できます。

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

または、非表示フィールドと表示フィールドを別々にループして、非表示フィールドのラベルを省略することもできます。

于 2012-09-26T10:24:31.433 に答える
4

あなたはFalseを与える必要があり、それはうまくいくでしょう:

self.fields['mp_e'].label = False

djangoバージョン:2.2

于 2019-07-03T10:56:47.360 に答える
2

私はこれが便利だと思いました、そしてそれは私のために働きます!

class CustomForm(forms.Form):
class Meta:
    ...  #other properties such as model, fields, widgets and help text
    labels = {
       'comment' : '',
    }
于 2021-06-07T13:09:18.983 に答える
1

forms.pyファイルに移動し、label=falseを追加します

以下のように

name = forms.CharField(required=True, max_length=100, widget=forms.TextInput(attrs={'placeholder': 'Enter Name *'}), label=False)
于 2019-02-25T18:36:53.070 に答える
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')  
于 2012-09-26T10:06:45.593 に答える