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

前言

最近学django,看到不少教程里面models.py里面建表,写一个类的时候,习惯上加个__str__ ,开始不太明白,简单的实践后才知道是为了美化类实例的打印内容。

3 里面用__str__ ,2里面用__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__ ,则显示正常了。

腾讯云云产品双12限时秒杀【点击购买】

搬瓦工,CN2高速线路,1GB带宽,电信联通优化KVM,延迟低,速度快,建站稳定,搬瓦工BandwagonHost VPS优惠码BWH26FXH3HIQ,支持<支付宝> 【点击购买】!

Vultr$3.5日本节点,512M内存/500G流量/1G带宽,电信联通优化,延迟低,速度快【点击购买】!

阿里云香港、新加坡VPS/1核/1G/25G SSD/1T流量/30M带宽/年付¥288【点击购买】

百度云不止一折优惠【点击购买】

发表评论

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