django __str__返回所有属性

时间:2016-03-10 19:56:39

标签: django django-models

django __str__有没有办法一次性输出所有属性,而不是像我在这里一样一个接一个地输出?我计划拥有大约100个属性,因此将所有内容放入str方法看起来并不合适。

class Carmodel(models.Model):
    year = models.PositiveSmallIntegerField(default=2016)
    make = models.CharField(max_length=60)
    model = models.CharField(max_length=60)
    styles = models.PositiveSmallIntegerField(default=1)

     def __str__(self):
         return '%s %s %s %s' % (self.year, self.make, self.model, self.styles)

3 个答案:

答案 0 :(得分:3)

我不确定这是不是一个好主意,但为了回答你的问题,循环模型字段并使用$_来获取值:

getattr

答案 1 :(得分:1)

您可以使用meta api获取所有字段名称的列表。然后,您可以遍历字段并使用getattr获取每个字段的值。

答案 2 :(得分:0)

自Django 1.10 + get_all_field_names开始删除,现在我们必须使用get_fields

更新版本如下所示:

def __str__(self):
    field_values = []
    for field in self._meta.get_fields():
        field_values.append(str(getattr(self, field.name, '')))
    return ' '.join(field_values)