Django-tables2 - 我不能在 "text" 参数中使用 [A('argument')] 吗?
Django-tables2 - can't I use [A('argument')] inside the "text" parameter?
我试图使这个 table 带有一个可点击的字段,该字段将条目的布尔值更改为相反的值。它有效,但我想要一个替代文本,因为 "False" 或 "True" 看起来不太好,而且用户主要是挪威人。
def bool_to_norwegian(boolean):
if boolean:
return "Ja"
else:
return "Nei"
class OrderTable(tables.Table):
id = tables.LinkColumn('admin_detail', args=[A('id')])
name = tables.Column()
address = tables.Column()
order = tables.Column()
order_placed_at = tables.DateTimeColumn()
order_delivery_at = tables.DateColumn()
price = tables.Column()
comment = tables.Column()
sent = tables.LinkColumn('status_sent', args=[A('id')])
paid = tables.LinkColumn('status_paid', args=[A('id')], text=[A('paid')])
class Meta:
attrs = {'class': 'order-table'}
如果您查看我正在测试的 "paid" 条目,为什么我不能使用与 args 中相同的访问器访问数据?如果我将 args 更改为 args=[A('paid')] 并查看 link,它确实包含正确的数据。型号名称与本table相同,"paid"和"sent"为BooleanFields。
这就是我最终想要的:
text=bool_to_norwegian([A('paid')])
这是我发送给 table 的内容:
orders = Order.objects.order_by("-order_delivery_at")
orders = orders.values()
table = OrderTable(orders)
RequestConfig(request).configure(table)
text
参数需要一个接受记录的可调用对象,returns 一个文本值。您正在向它传递一个列表(它将忽略它),并且您的函数需要一个布尔值而不是记录。这里也不需要使用访问器。
像这样的东西应该可以工作:
def bool_to_norwegian(record):
if record.paid:
return "Ja"
else:
return "Nei"
然后在您的专栏中:
paid = tables.LinkColumn('status_paid', text=bool_to_norwegian)
(请注意,从您的问题中不清楚数据来自何处 - paid
是布尔值吗?您可能需要对其进行调整以适应)。
顺便说一句,您将 args
传递给您的专栏的方式很奇怪(文档似乎也建议这样做,但我不明白为什么 - 这非常令人困惑)。更标准的方法是:
id = tables.LinkColumn('admin_detail', A('id'))
或使用命名参数:
id = tables.LinkColumn('admin_detail', accessor=A('id'))
我试图使这个 table 带有一个可点击的字段,该字段将条目的布尔值更改为相反的值。它有效,但我想要一个替代文本,因为 "False" 或 "True" 看起来不太好,而且用户主要是挪威人。
def bool_to_norwegian(boolean):
if boolean:
return "Ja"
else:
return "Nei"
class OrderTable(tables.Table):
id = tables.LinkColumn('admin_detail', args=[A('id')])
name = tables.Column()
address = tables.Column()
order = tables.Column()
order_placed_at = tables.DateTimeColumn()
order_delivery_at = tables.DateColumn()
price = tables.Column()
comment = tables.Column()
sent = tables.LinkColumn('status_sent', args=[A('id')])
paid = tables.LinkColumn('status_paid', args=[A('id')], text=[A('paid')])
class Meta:
attrs = {'class': 'order-table'}
如果您查看我正在测试的 "paid" 条目,为什么我不能使用与 args 中相同的访问器访问数据?如果我将 args 更改为 args=[A('paid')] 并查看 link,它确实包含正确的数据。型号名称与本table相同,"paid"和"sent"为BooleanFields。
这就是我最终想要的:
text=bool_to_norwegian([A('paid')])
这是我发送给 table 的内容:
orders = Order.objects.order_by("-order_delivery_at")
orders = orders.values()
table = OrderTable(orders)
RequestConfig(request).configure(table)
text
参数需要一个接受记录的可调用对象,returns 一个文本值。您正在向它传递一个列表(它将忽略它),并且您的函数需要一个布尔值而不是记录。这里也不需要使用访问器。
像这样的东西应该可以工作:
def bool_to_norwegian(record):
if record.paid:
return "Ja"
else:
return "Nei"
然后在您的专栏中:
paid = tables.LinkColumn('status_paid', text=bool_to_norwegian)
(请注意,从您的问题中不清楚数据来自何处 - paid
是布尔值吗?您可能需要对其进行调整以适应)。
顺便说一句,您将 args
传递给您的专栏的方式很奇怪(文档似乎也建议这样做,但我不明白为什么 - 这非常令人困惑)。更标准的方法是:
id = tables.LinkColumn('admin_detail', A('id'))
或使用命名参数:
id = tables.LinkColumn('admin_detail', accessor=A('id'))