如何为Django Tables2使用Django __str__()方法



我希望我的django_tables2表显示记录的__str__()格式版本。以下是我正在使用的:

#models.py
class people(models.Model):
    namelast = models.CharField(max_length=100, verbose_name='Last Name')
    namefirst = models.CharField(max_length=100, verbose_name='First Name')
    # more fields...
    def __str__(self):
        return "%s %s" % (self.namefirst, self.namelast)
#tables.py
import django_tables2 as tables
from .models import people
class PersonTable(tables.Table):
    person = tables.Column()
    def render_person(self, value, record):
        return record  #Also tried record.lastname, record.__str__()
    class Meta:
        model = people
        fields = ('person',)

它的所有变体刚刚返回了一个表,该表具有名为"的列;"人";以及空行(即"_"(。如何获取格式为namefirst namelast的列?

如果您使用的是Python 3.6及以上版本,请使用f-string,否则.format

def __str__(self):
    # f-string
    return "{self.namefirst} {self.namelast}"
    # format 
    return "{} {}".format(self.namefirst, self.namelast)

__str__用于显示对象ex的字符串表示:p1 = people()现在当你打印对象时,你会得到这个输出print(p1) => john doe

PersonTable的元中添加要打印的字段

class PersonTable(tables.Table):
    def render_person(self, value, record):
        return record  #Also tried record.lastname, record.__str__()
    class Meta:
        model = people
        fields = ('namefirst', 'namelast',)

最新更新