Django 1.11.20,python3.6设置Admin 显示外键对象问题

摘要: 转移阿里云服务器,同时把多年前做的一个工作室公司网站转移到新的环境,python3.6.6, django 1.11.20上,在代码上做了一些调整,基本可以运行起来了,但到Django Admin 后台查看相关数据的时候,尴尬了。图片链接外键关联的字段,显示的是对象,而不是应该显示的中文名称。这个系统是很从很来的python2切换过来的,想想问题就应该出在models.py里面的定义上面.原来我在models里面是这么定义的:

转移阿里云服务器,同时把多年前做的一个工作室公司网站转移到新的环境,python3.6.6, django 1.11.20上,在代码上做了一些调整,基本可以运行起来了,但到Django Admin 后台查看相关数据的时候,尴尬了。

外键关联的字段,显示的是对象,而不是应该显示的中文名称。

这个系统是很从很来的python2切换过来的,想想问题就应该出在models.py里面的定义上面.原来我在models里面是这么定义的:

class ServiceCategory(models.Model):
    id = models.AutoField(primary_key=True)
    catname = models.CharField(max_length=150, blank=True)
    class Meta:
        db_table = 't_service_category'
        verbose_name = u'service_category'
        verbose_name_plural = u'service_category'
        #app_label = u'My_Category'
    def __unicode__(self):
        return self.catname

class Service(models.Model):
    id = models.AutoField(primary_key=True)
    catid = models.ForeignKey(ServiceCategory,db_column= 'catid',to_field='id',blank=False,verbose_name = 'catid') 
    title = models.CharField(max_length=150, blank=True)
    content = models.TextField(blank=True)
    class Meta:
        db_table = 't_service'
        verbose_name = u'service'
        verbose_name_plural = u'service'
        #app_label=u"My_Company"

问题就出在ServiceCategory里面的__unicode__方法上,在python3里面,应该改成__str__, 如下:
class ServiceCategory(models.Model):
    id = models.AutoField(primary_key=True)
    catname = models.CharField(max_length=150, blank=True)
    class Meta:
        db_table = 't_service_category'
        verbose_name = u'service_category'
        verbose_name_plural = u'service_category'
        #app_label = u'My_Category'
    def __str__(self):
        return self.catname


再次测试,是期望的结果了。


上一篇: 阿里rds转MYSQL随手记
下一篇: 分布式定时任务备忘录
 评论 ( What Do You Think )
名称
邮箱
网址
评论
验证
   
 

 


  • 微信公众号

  • 我的微信

站点声明:

1、一号门博客CMS,由Python, MySQL, Nginx, Wsgi 强力驱动

2、部分文章或者资源来源于互联网, 有时候很难判断是否侵权, 若有侵权, 请联系邮箱:summer@yihaomen.com, 同时欢迎大家注册用户,主动发布无版权争议的 文章/资源.

3、鄂ICP备14001754号-3, 鄂公网安备 42280202422812号