Jor*_*anc 4 django django-tables2
我正在尝试根据我的对象值之一更改表行的格式。我知道如何将行属性传递给我的模板,但不知道在决定我的行在类定义中的外观时如何使用当前记录。见下文:
class OrderTable(tables.Table):
my_id = tables.Column(verbose_name="Order number")
status = tables.Column(verbose_name="Order status")
class Meta:
model = Order
row_attrs = {
"class": lambda record: record.status
}
Run Code Online (Sandbox Code Playgroud)
这是我在 django_tables2 文档中读到的内容。然而,当尝试添加一些“if”时,它似乎返回 lambda 函数对象而不是值:
class OrderTable(tables.Table):
my_id = tables.Column(verbose_name="Order number")
status = tables.Column(verbose_name="Order status")
class Meta:
model = Order
print(lambda record: record.status)
if lambda record: record.status = '0':
row_attrs = {
"class": "table-success"
}
else:
row_attrs = {
"class": ""
}
Run Code Online (Sandbox Code Playgroud)
我的日志中打印的内容是:<function ZamTable.Meta.<lambda> at 0x000001F7743CE430>
我也不知道如何使用“记录”属性创建自己的函数。我应该将什么传递给新创建的函数?
class OrderTable(tables.Table):
my_id = tables.Column(verbose_name="Order number")
status = tables.Column(verbose_name="Order status")
class Meta:
model = Order
def check_status(record):
record = record.status
return record
status = check_status(???)
if status = '0':
row_attrs = {
"class": "table-success"
}
else:
row_attrs = {
"class": ""
}
Run Code Online (Sandbox Code Playgroud)
您只需要修改返回表类值的方式。
row_attrs = {
"class": lambda record: "table-success" if record.status == "0" else ""
}
Run Code Online (Sandbox Code Playgroud)
或作为函数
def calculate_row_class(**kwargs):
""" callables will be called with optional keyword arguments record and table
https://django-tables2.readthedocs.io/en/stable/pages/column-attributes.html?highlight=row_attrs#row-attributes
"""
record = kwargs.get("record", None)
if record:
return record.status
return ""
class Meta:
model = Order
row_attrs = {
"class": calculate_row_class
}
Run Code Online (Sandbox Code Playgroud)
看起来您没有正确比较值,需要使用双等于。
| 归档时间: |
|
| 查看次数: |
651 次 |
| 最近记录: |