問題

私はMySQLビュー(選択としてビューを作成...)で作業しており、ビューを次のようなモデルに接続するのに成功しました。

 #models.py
class Dashboard(models.Model):
    devenv = models.CharField(max_length=30, primary_key=True)
    numberofissues = models.BigIntegerField()
    class Meta:
        managed=False
        db_table = 'stability_dashboard'
 

また、例のボイラープレートコードを使用してテーブルにデータを表示することもできました。

 #tables.py
class DashboardTable(tables.Table):
    class Meta:
        model = Dashboard
        attrs = {'class': 'paleblue'}

#views.py
def dashboard(request):
    table = DashboardTable(Dashboard.objects.all())
    RequestConfig(request).configure(table)
    return render(request, 'uptime/dash.html', {'table': table})
 

私は今、各列に表示されているタイトルを、スペースを含むより理解できるものに変更したいと思います。 'devenv' => 'Development Environment'の代わりに

  ベストアンサー

tables.pyで上書きしたい名前の列を追加するだけです。例えば

#tables.py
import django_tables2 as tables
from models import Dashboard

class DashboardTable(tables.Table):
  devenv = tables.Column(verbose_name= 'Development Environment' )

  class Meta:
    model = Dashboard
    attrs = {'class': 'paleblue'}

もう1つの(おそらくもっとDRY)解決策は、tables.pyをそのまま残し、モデル定義にverbose_nameを追加することです。

#models.py
class Dashboard(models.Model):
    devenv = models.CharField(max_length=30, primary_key=True, verbose_name='Development Environment')
    numberofissues = models.BigIntegerField(verbose_name='Number of Issues')
    class Meta:
        managed=False
        db_table = 'stability_dashboard'

  同じタグがついた質問を見る

djangodjango-tables2