Django检查表单选择是否为空

时间:2013-05-19 23:08:55

标签: django django-templates

在模板中,如何检查 ModelChoiceField 是否为空

这是我的表格:

class BatchForm(forms.ModelForm):
    def __init__(self, user=None, *args, **kwargs):
        super(BatchForm, self).__init__(*args, **kwargs)
        this_templates = Template.objects.for_user(user)
        self.fields["templates"] = forms.ModelChoiceField(queryset=this_templates, required=False, empty_label=None)

然后在我的观看中,如果 queryset 为空,我想显示下拉列表......

{% if not form.templates%}
<div class="control-group">
  <div class="controls">
    {{ form.templates }}
  </div>
etc

3 个答案:

答案 0 :(得分:6)

你可以这样做:

{% if form.templates.field.choices.queryset.all|length %}

<div class="control-group">
  <div class="controls">
    {{ form.templates }}
  </div>

答案 1 :(得分:2)

只需在表单字段中测试查询集的count

{% if form.templates.queryset.count %}
    <div class="control-group">
      <div class="controls">
       {{ form.templates }}
      </div>
    </div>
{%endif%}

希望它有所帮助!

答案 2 :(得分:0)

现在有一个exists方法。这比计算大多数数据库后端效率更高。