まず、pip で django-tables2 をインストールする。
pip install django-tables2model内に格納されたデータを出力するには、対応するtableクラスを作成する。
以下の User クラスのデータを出力する。
[model.py] class Organization(models.Model): organization_id = models.CharField(max_length=5) name = models.CharField(max_length=20) class User(models.Model): staff_id = models.CharField(max_length=7) name = models.CharField(max_length=15) organization = models.ForeignKey(Organization)まず、出力項目を管理する django_tables2.Table より派生したクラスを作成する。
[tables.py] import django_tables2 as tables class UserTable(tables.Table): staff_id = tables.Column(accessor="staff_id", verbose_name="STAFF ID", order_by=("staff_id")) name = tables.Column(accessor="name", verbose_name="USER NAME", order_by=("name")) organization = tables.Column(accessor="organization.name", verbose_name="ORGANIZATION", order_by=("organization.organization_id")) class Meta: attrs = {"class": "paleblue"}上に記載した Column の引数を説明する。
accessor は、該当項目のデータを管理している model 項目の名称となる。
テーブル内の項目名と一致している場合は省略可能である。
特に外部参照している場合、"参照先.項目名"とする必要がある。
verbose_name は、表上に出力される項目名称である。
また、order_by は、表上のソートボタンを押下された際、何に基づいてソートするかを定義するものである。
当該項目についても、外部参照している場合は、"参照先.項目名"とする必要がある。
表を表示する views.py の例を記載する。
表示対象となるデータを取得する。以下の例では、all によりすべてのデータを取得対象としているが、filter により選択することも可能である。
[views.py] from django.shortcuts render from models import User from tables import UsetTable from django_tables2.config import RequestConfig def create_table(request): users = User.objects.all() table = UserTable(users) RequestConfig(request).configure(table) return render(request, "people.html", {"table": table})適当な url により、create_table を呼び出せば、ソート可能な表が出力される。
0 件のコメント:
コメントを投稿