Django 显示“TourCategory 对象”字符串而不是 TourCategory 的名称

Django displays `TourCategory object` string instead of TourCategory's name

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>

模型游览类别

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 的名称

Python 使用 Class' __unicode__ 方法(如果不使用 unicode,则使用 __str__ 方法)来显示该对象的 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,但我写它是为了让你可以测试有无它。