前言
最近学django,看到不少教程里面models.py里面建表,写一个类的时候,习惯上加个__str__ ,开始不太明白,简单的实践后才知道是为了美化类实例的打印内容。
python3 里面用__str__ ,python2里面用__unicode__
写个类在 models.py
中添加
class ComputerRoom(models.Model):
name = models.CharField(max_length=256,verbose_name = "名称")
abbr = models.CharField(max_length=128, blank=True, null=True,verbose_name = "缩写")
type = models.CharField(max_length=256)
exist_buyout = models.IntegerField(blank=True, null=True)
cmd_buyout = models.CharField(max_length=256, blank=True, null=True)
exist_95 = models.IntegerField(blank=True, null=True)
cmd_95 = models.CharField(max_length=256, blank=True, null=True)
maximum = models.IntegerField(blank=True, null=True)
lower_limit = models.IntegerField(blank=True, null=True)
upper_limit = models.IntegerField(blank=True, null=True)
weights = models.IntegerField(blank=True, null=True)
host = models.CharField(max_length=256, blank=True, null=True)
username = models.CharField(max_length=256, blank=True, null=True)
password = models.CharField(max_length=256, blank=True, null=True)
port = models.IntegerField(blank=True, null=True)
maximum_95 = models.BigIntegerField(blank=True, null=True)
lower_limit_95 = models.BigIntegerField(blank=True, null=True)
upper_limit_95 = models.BigIntegerField(blank=True, null=True)
update_time = models.DateTimeField(auto_now=True)
# def __unicode__(self):
# return self.name
def __str__(self):
return self.name
class Meta:
managed = False
db_table = 'computer_room'
verbose_name_plural = "机房管理"
这里如果我们使用 __unicode__
,在列表中可以正常显示,但是在 添加/修改 页面显示 Object 对象了。
如果使用 __str__
,则显示正常了。