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)
答案 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)