在模板中,如何检查 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
答案 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
方法。这比计算大多数数据库后端效率更高。