python models.py 类里面的__str__ 和__unicode__作用

前言

最近学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__ ,则显示正常了。

评论

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注