我在django_tables2中有以下表格:
class CustomerTable(tables.Table):
class Meta:
model = Customer
attrs = {'class': 'table'}
fields = {'lastname', 'firstname', 'businessname', 'entrydate'}
我的客户模型有firstname
和lastname
字段。
我想要的是让一个名称列填充'lastname'+', '+firstname'
之类的内容,以便它显示姓氏,姓名可以排序的姓氏。
The docs表明这是可能的,但它没有提供将现有数据重新用于新列的工作示例。只是改变现有数据。
我如何将这两个字段合并为一个列?
答案 0 :(得分:0)
像这样更新您的模型:
class Customer(models.Model):
# Fields
@property
def full_name(self):
return '{0} {1}'.format(self.first_name, self.last_name)
并更新您的Table类:
class CustomerTable(tables.Table):
full_name = tables.Column(accessor='full_name', verbose_name='Full Name')
class Meta:
model = Customer
attrs = {'class': 'table'}
fields = {'lastname', 'firstname', 'businessname', 'entrydate', 'full_name'}
答案 1 :(得分:0)
我找到了一种无需在模型中添加其他属性即可完成此操作的方法。
使用第一个字段作为访问器,并将第二个部分格式化为render_()
方法。顺序应该可以,因为您呈现的值是姓氏。
class CustomerTable(tables.Table):
lastname = tables.Column(verbose_name="Lastname, Firstname")
class Meta:
model = Customer
attrs = {'class': 'table'}
fields = {'lastname', 'businessname', 'entrydate'}
render_lastname(self, record, value):
return mark_safe(f"{value}, {record.firstname}")