【问题标题】:django-tables2 not displaying column headersdjango-tables2 不显示列标题
【发布时间】:2019-07-22 11:56:20
【问题描述】:

我正在使用基于此模型的django-tables2 生成排行榜(在users/models.py 中):

class CustomUser(AbstractUser):
    points = models.DecimalField(
        max_digits=20, 
        decimal_places=2,
        default=Decimal('1000.00'))

tables.py中,我选择usernamepoints,按后者排序:

class UserTable(tables.Table):
    class Meta:
        model = CustomUser
        fields = ('username','points')
        order_by = '-points'
        template_name = 'django_tables2/bootstrap.html' 

views.py,我有

def leaderboard_list(request):
    table = UserTable(CustomUser.objects.all())
    RequestConfig(request).configure(table)

    return render(request, 'leaderboard.html', {
        'table': table
    })

最后,这会在leaderboard.html 模板中呈现,带有{% load render_table from django_tables2 %}{% render_table table %}

表格呈现良好,但没有任何列标题。

尝试 1: 我根据this suggestionCustomUser 模型的points 字段中添加了verbose_name,假设默认情况下应该显示(根据this),但无济于事。

尝试 2: 下面给了我列名,但只有当我设置orderable=False时,这意味着我不能再按points排序:

class UserTable(tables.Table):
    username = tables.Column(verbose_name='User name', orderable=False, accessor=Accessor('username'))
    points = tables.Column(verbose_name='Points', orderable=False, accessor=Accessor('points'))
    class Meta:
        model = CustomUser
        fields = ('username','points')
        order_by = '-points'
        template_name = 'django_tables2/bootstrap.html'

我在这里做错了什么?

【问题讨论】:

    标签: django django-tables2


    【解决方案1】:

    如果其他人遇到这个问题,这里有一个解决方案:

    首先,在表格类的每一列上设置orderable=False,确保所有的表头都显示出来:

    class UserTable(tables.Table):
        username = tables.Column(verbose_name='Username', orderable=False, accessor=Accessor('username'))
        points = tables.Column(verbose_name='Points', orderable=False, accessor=Accessor('points'))
    
        class Meta:
            model = CustomUser
            fields = ('username','points')
            template_name = 'django_tables2/bootstrap.html'
    

    然后,在CustomUser 模型上添加如下Meta,如下所示,使表格按点排序:

    class Meta:
            ordering = ['-points']
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-16
      • 1970-01-01
      相关资源
      最近更新 更多