2017-02-23 15 views
1

私はdjangotables2 1.3.0でDjango 1.8.7を使用しています。 私はModelFormを使用してテーブルを作成しようとしています(下記の例)。除外を使用して列を非表示にしようとすると、それでもすべての列が表示されます。 Excludeはここで何の効果もないようです。Djangoテーブル2除外は機能しません

私のmodels.pyの一部:

class Event(models.Model): 
    Name = models.CharField (max_length = 45, blank = False, null = False) 
    Date = models.DateTimeField (auto_now_add=True) 
    Text = models.CharField (max_length = 64, blank = False, null = False) 
    class Meta: 
     ordering = ["-Date", "Name"] 
     verbose_name = "Event" 
     verbose_name_plural = "Events" 
     def __str__(self): 
      return self.Name 


class Event_Form(ModelForm): 
    class Meta: 
     model=Event 
     exclude = ('Date',) 

私のviews.pyの一部:

def dbtest_event(request,): 
    return render(request, 'dbtest_event.html', {"Title":"Events", 
    'dbtest_event':Event.objects.all()}) 

とテーブルを使用するHTMLファイル:

{% extends "dbtest.html" %} 
{% load render_table from django_tables2 %} 
{% load static %} 
{% block content %} 
    {% render_table dbtest_event %} 
{% endblock %} 

ご協力いただきありがとうございました!

+2

ModelFormのメタからの除外値が自動的にテーブルのメタに変換される理由はわかりません。テーブルが定義されている場所にコードを投稿できますか? 'django_tables2.Table'をサブクラス化するものですか? – nimasmi

+0

私が知っている限り、テーブルは本当にanywhrere作成されていません。私は、自分のviews.pyとhtmlファイルの一部で質問を更新します。それは、私が考えるテーブルと関係があります。 – Nkls155

+0

あなたは '{%render_table%}'タグを使用していますか? – nimasmi

答えて

0

あなたのビューコードは実際にはEvent_Formクラスを参照していないため、除外に注意する必要はありません。ドキュメントhttp://django-tables2.readthedocs.io/en/latest/pages/tutorial.htmlから

単純間に直接クエリセットを渡す{%render_table%}は、任意のカスタマイズを可能にしません。そのためには、明示的に

class EventTable(django_tables2.Table): 

    class Meta: 
     model = Event 
     exclude = ('Date',) 

は、その後、あなたのテーブルには、テンプレートのコンテキストで利用可能であることを確認しますので、あなたのテーブルを定義する必要がありますカスタムのテーブルクラス

を定義する必要があります

def dbtest_event(request,): 
    table = EventTable(Events.objects.all()) 
    RequestConfig(request).configure(table) 
    return render(request, 'dbtest_event.html', { 
     "Title":"Events", 
     'dbtest_event_table': table, 
    }) 

(もしGETパラメータに基づいてページネーションやフィルタリングを行う必要がない場合は、RequestConfig行を省略することができます)。

最後に{% render_table dbtest_event_table %}を使用してください。

+0

ありがとう、それは私のために働いた。私は最後の質問があります:IDの代わりにこれを行うことは可能ですか?私はあなたのやり方でそれを試みたが、うまくいかなかった。データベースはその属性を私が定義していないからだと思う。 – Nkls155

+0

あなたは 'id'小文字で(それは表の見出しの「ID」として示されていますが、Pythonで属性名は' id'である)を使用しましたか? – nimasmi

+0

それはそれだった、今それは正常に動作します。ご協力いただきありがとうございます! – Nkls155

関連する問題