繁体   English   中英

如何检查django_tables2对象为空/空?

[英]how to check django_tables2 object empty/null?

我正在尝试解决的问题:
仅当表my_table不为空时才显示搜索栏,否则将其隐藏。

这是我的views.py:

def my_table(request):
    model1 = Model1.objects.all().filter(Q(some_query))
    table = MyTable(model1)
    RequestConfig(request).configure(table)
    if not table:
        print "table is empty"
        table = None
    else:
        print "table is not empty."
    return render(request, 'my_table.html', {'my_table':table,})

这是我的my_table.html

{% load render_table from django_tables2 %}
{% if my_table  %}
Number of entries: {{ my_table|length }}.
<section>
    <form method="post" action=".">
      {% csrf_token %}
      <input type="text" class="search-query span80" id="search" name="search" placeholder="Type to search">
      <button type="submit" class="btn">Search</button> 
    </form>
</section>
{% else %}
<!-- There's no my_table. -->
{% endif%}

{% render_table my_table %}

但是, my_table(request) views.py中的此表对象实际上不包含任何内容,并且不会在html中呈现任何内容,但是它并不为空,并显示搜索栏。
请指教。 我在哪里做错了?

为了回应评论,这是MyTable代码:

class MyTable(tables.Table):
    entry1 = tables.Column(verbose_name="Entry 1")
    entry2 = tables.Column(verbose_name="Entry 2")
    class Meta:
        model = MyModel
        empty_text = "There is no entry record."
        order_by = "entry1"
        orderable = True
        sequence = ('entry1', 'entry2')
        fields = ('entry1', 'entry2')
        attrs = {"class": "paleblue", "style": "width:380px"}

这是MyModel的代码:

class MyModel(models.Model):
    entry1 = models.CharField(primary_key=True, max_length=11L, db_column='Entry1', blank=True) # Field name made lowercase.
    entry2 = models.CharField(max_length=11L, db_column='Entry2', blank=True) # Field name made lowercase.
class Meta:
    db_table = 'my_table'

在您的views.py中,您可以使用:

if table.data.data.__len__ > 0:

在模板中,您可以使用:

{% if table.data|length > 0 %}
do whatever you want here...
{% endif %}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM