【问题标题】:Django check if form choice is emptyDjango检查表单选择是否为空
【发布时间】:2013-05-14 11:24:53
【问题描述】:

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

这是我的表格:

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

【问题讨论】:

    标签: django django-templates


    【解决方案1】:

    你可以这样做:

    {% if form.templates.field.choices.queryset.all|length %}
    
    <div class="control-group">
      <div class="controls">
        {{ form.templates }}
      </div>
    

    【讨论】:

    • 对于 django forms.Form 你可以使用 {% if form.templates.field.choices|length %}
    【解决方案2】:

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

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

    希望对你有帮助!

    【讨论】:

      【解决方案3】:

      现在有一个exists 方法。对于大多数数据库后端来说,这比计数更有效。

      【讨论】:

      • 一些示例代码会增强您的答案的实用性。
      猜你喜欢
      • 2020-02-27
      • 1970-01-01
      • 2012-09-27
      • 1970-01-01
      • 2014-07-10
      • 2011-06-29
      • 1970-01-01
      • 2013-05-17
      • 1970-01-01
      相关资源
      最近更新 更多