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

厂家CPU内存硬盘流量价格购买链接
RamNode11GB25GB-SSD500GB/mUSD $5购买
Linode11GB25GB-SSD1000GB/mUSD $5购买
DigitalOcean11GB25GB-SSD1000GB/mUSD $5/m购买
Vultr11GB25GB-SSD1000GB/mUSD $5/m购买
腾讯云Qcloud22GB50GB-SSD购买

Posted

in

by

Comments

发表回复

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