Django显示`TourCategory对象`字符串而不是TourCategory的名字

时间:2016-04-04 06:27:50

标签: django django-admin

class New(models.Model):
.....
category = models.ForeignKey(TourCategory, verbose_name="Tour Category")
浏览器中的

<select id="id_category" name="category">
<option value="" selected="selected">---------</option>
<option value="1">TourCategory object</option>
<option value="2">TourCategory object</option>
<option value="3">TourCategory object</option>
</select>

Model TourCategory

from django.db import models

class TourCategory(models.Model):
name = models.CharField(max_length=200, verbose_name="Name")

class Meta:
    verbose_name = 'Tour Category'
    verbose_name_plural = 'Tour categories'

使其显示TourCategory

的名称的目标

1 个答案:

答案 0 :(得分:1)

Python使用Class'__unicode__方法(或__str__方法,如果您不使用unicode)来显示该对象的object representation

Django使用此方法在管理站点中显示对象。

因此,您必须定义或修复__unicode__(或__str__

class TourCategory(models.Model):
    name = models.CharField(max_length=200, verbose_name="Name")

    def __unicode__(self):
        return unicode(self.name)

    def __str__(self):
        return self.name

Look here for the documentation。通常你不需要施放 self.nameunicode,但是我写了它,所以你可以测试有没有它。