2016-08-17 7 views
2

私が解決しようとしている問題:
テーブルmy_tableが空でない場合にのみ検索バーを表示し、それ以外の場合は非表示にします。django_tables2オブジェクトの空/ヌルをチェックする方法は?

ここに私の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' 
+0

もしあなたが 'table [0]'ではないなら 'を試しましたか? – JazZ

+0

ありがとうございますが、私のテーブルはインデックス作成をサポートしていません。 –

+0

何が入っていますか? – JazZ

答えて

2

は、あなたがのviews.pyでは、あなたが使用することができます。

if table.data.data.__len__ > 0: 

あなたのテンプレートには次のものを使用できます:

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

素晴らしいですが、これが私の問題を解決しました!あなたはロック! :) –

関連する問題