【发布时间】: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中,我选择username和points,按后者排序:
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 suggestion 在CustomUser 模型的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