0

入力フィールド (IntegerField) で整数ゼロを試しましたが、送信後にそのゼロが表示されることはありません。

これは私のテンプレートの一部です:

{{user_date_table.june_11}}
{% if not user_date_table.june_11_steps %}
 <form action="/steps_count/index/{{ username }}/table/" method="post">
  {% csrf_token %}              
  <input type="text" autocorrect="off" autocapitalize="off" name="june_11_steps"/>
  <input type="submit" value="Add"/>
 </form>
{% else %}      
 {{user_date_table.june_11_steps}}
{% endif %}

「True」をスローすると思いますif not user_date_table.june_11_steps。つまり、ゼロを入力として使用すると空白になります。これは正しいですか、これを克服できますか?

4

1 に答える 1

6

Python では、次のすべてが として評価されFalseます。

'', "", 0, [], {}, (), False, None 

したがって、user_date_table.june_11_steps0 は{% if not user_date_table.june_11_steps %}評価されTrue、そのブロックが実行されます。

更新: 解決策については、

  1. user_date_tableフォームを表示しているときにコンテキストで実行されない場合、またはフォームが空の場合は、使用できます

    {% if not user_date_table%}
    
  2. のような別の値をテンプレートに渡しdisplay_result、それを使用してどのフィールドセットが表示されるかを確認します。

ビュー.py:

if request.POST: #saving the post data
    display_result = True

template.html

{% if not display_result %}
    <form action="/steps_count/inde...

しかし、最初のアプローチは常に優れています。

于 2012-05-12T10:49:49.037 に答える