0

is_checkbox特定のdjangoフォームのフィールドがチェックボックスであるかどうかを確認するために使用されるフォームフィールドメソッドについて知っています。フィールドがテキストエリアであるかどうかを確認する方法はありますか?

私はこれをやってみました:

{% if field.is_textarea %}

しかし、これはうまくいかないようです。

4

3 に答える 3

3

編集:説明-フィルターはフィールドオブジェクトを受け取り、文字列と比較して使用できるDjangoで使用されるウィジェットの名前を返します。

でテンプレートフィルターの定義を使用しますtemplatetags.py

from django import template
register = template.Library()


@register.filter('input_type')
def input_type(input):
return input.field.widget.__class__.__name__

そして、たとえば次のようにテンプレートで使用します。

{% if field|input_type == 'Textarea' %}
<div class="col-xl-9">{{ field }}</div>
{% else %}
<div class="col-xl-3">{{ field }}</div>
{% endif %}
于 2016-07-08T14:43:56.297 に答える
1

次のようなことをする必要があります。

{% if field.widget...... %}

ウィジェットは、それ自体のフィールドではなく、レンダリングを担当します。

シェルで確認する例:

from django import forms
from django.forms import widgets

class ContactForm(forms.Form):
    text = forms.CharField(max_length=100, widget=widgets.Textarea)

f = ContactForm()
f.fields['text'].widget

<django.forms.widgets.Textarea object at 0x218ccd0>
于 2012-12-21T09:28:52.020 に答える
0

私は同じ意図を持っていました。唯一の解決策は、あなたの条件がifで動作することviews.pyです。
つまり、最初にhtmlコードでテキスト領域に名前を付けてから、views.py.
このように名前を取得するように移動します。テキスト領域の名前がviews.pyで「テキスト」であると想定して、このコードtext = request.GET ['text']を記述し、次のようなifステートメントを作成します。

if text == '':
    return render(request, 'html page you want render')
else:
    return render(request, ' the exact page you want render if the textarea is filled ')
于 2021-01-04T11:12:31.990 に答える