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

转移阿里云服务器,同时把多年前做的一个工作室公司网站转移到新的环境,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


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




除非申明,文章均为一号门原创,转载请注明本文地址,谢谢!
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags: django
相关日志:
评论: 0 | 引用: 0 | 查看次数: -
发表评论
昵 称:
密 码: 游客发言不需要密码.
内 容:
验证码: 验证码
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.