2016-05-04 11 views
2

私のdjangoアプリでテーブルをdatatables using django-tables2に変換しようとしています。私が持っているDjango Datatablesビュー

イム私のcampaigns.pyビュー:

class CampaignListView(FacebookAdInit): 
    """ CampaignListView for viewing all the campaigns""" 

    def get(self, request, *args, **kwargs): 
     ad_account = self.get_ad_account(kwargs.get('ad_account_id')) 

     campaigns = self.get_campaigns(ad_account.get('id')) \ 
      if ad_account else None 
     context = {'campaigns': campaigns, 'ad_account': ad_account} 

     return render(request, 'app/campaigns/index.html', context) 

イム私が持っている私のcampaigns/index.html

{% extends "app/empty_page.html" %} 
{% load render_table from django_tables2 %} 
{% block content %} 
      {% if ad_account %} 
         {% render_table context %} 
      {% endif %} 

{% endblock %} 

は、しかし、これは私にエラーを与える:Expected table or queryset, not 'str'. 任意の助けがgreately理解されるであろう。

今、私は、コードのこの部分を使用して、テーブルを生成します。

   <table class="table table-bordered table-striped" id="campaigns"> 
        <thead> 
        <tr> 
         <th> #</th> 
         <th> Campaign Name</th> 
         <th> Campaign Objective</th> 
         <th> Campaign Effective Status</th> 
        </tr> 
        </thead> 
        <tbody> 
        {% for campaign in campaigns %} 
         <tr> 
          <td> {{ forloop.counter }} </td> 
          <td> 
           <a href="/ad_accounts/{{ ad_account.id }}/campaigns/{{ campaign.id }}/ad_sets"> 
            {{ campaign.name }} </a> 
          </td> 
          <td> {{ campaign.objective }}</td> 
          <td> {{ campaign.effective_status }} </td> 
         </tr> 
        {% endfor %} 
        </tbody> 
       </table> 
+0

投稿全体をトレースしてください。 – trinchet

+0

私が投稿したものがトレースバックに表示されます。エラーメッセージと '{%render_table context%}'行がハイライト表示されます – newkid101

答えて

1

あなたはrender_tableタグにTableインスタンスまたはクエリセットを渡す必要があります。

{% render_table campaigns %} 
+0

これが最初です。しかし、何も生成されません。つまり、空のページが表示されます(デバッグにエラーが表示されません) – newkid101

+0

申し訳ありませんが、他の問題は見つかりません。あなたの質問には、あなたが表示していないものがたくさん含まれています(例えば、 'self.get_campaigns(ad_account.get( 'id')')。問題は他の場所にあるかもしれません。例えば、クエリーセットに対して 'Campaign.objects.all()[:10]'を使い、それが動作するまでテンプレート継承を使わないでください)。 – Alasdair

+0

あなたのコードには 'ad_accounts'( 's'付き)にアクセスしようとしているものは表示されません。あなたのビューとテンプレートには 'ad_account'しか含まれていません。 – Alasdair