我创建了一个新列(issue_number),它只代表表的“pk”,但在模型中检索一个对象:
@property
def issue_number(self):
return self
当我想用该列订购表时问题就出现了。我得到一个随机顺序,也许这是因为我不是通过整数而是通过对象命令。
如果我鼠标悬停在标题栏上,我得=“?sort = issue_number”但我想要“?sort = id”
class IssueNumberColumn(tables.Column):
def render(self, value):
obj = value
if obj.status.upper() in ['RESOLVED', 'INVALID']:
return mark_safe('<a href="%s"><s>#%s</s></a>' % (reverse('issues.views.view', args=(obj.pk,)), obj.pk))
else:
return mark_safe('<a href="%s">#%s</a>' % (reverse('issues.views.view', args=(obj.pk,)), obj.pk))
class IssueTable(tables.Table):
issue_number = IssueNumberColumn(verbose_name="ID", order_by='pk')
#id = tables.Column(accessor='pk')
def render_id(self, value):
return mark_safe('<a href="%s">#%s</a>' % (reverse('issues.views.view', args=(value,)), value))
def render_title(self, value, record):
return mark_safe('<a href="%s">%s</a>' % (reverse('issues.views.view', args=(record.id,)), value))
def render_created(self, value):
#without doing this, it shows American date formatting.
return value
class Meta(object):
model = Issue
fields = ('issue_number', 'title', 'product', 'type', 'priority', 'status', 'created')
attrs = {'class': 'table table-bordered'}
empty_text = _('No records found')
我做了很多尝试,但没有任何帮助:
issue_number = IssueNumberColumn(verbose_name="ID", order_by='pk')
issue_number = IssueNumberColumn(verbose_name="ID", order_by='id')
答案 0 :(得分:0)
尝试使用order_by
的元组而不是字符串:
order_by=('pk',)
答案 1 :(得分:0)
如果未将'id'声明为字段,则使用'Vendor'
或order_by = ('id',)
不起作用。
所以我建议你以这种方式添加列:
order_by = 'id'
然后将字段'id'添加到'fields'中。例如:
id = tables.Column(visible=False)
我希望它会对某人有用。