Django管理问题强制转换为Unicode

时间:2011-09-26 20:00:43

标签: python django django-admin

尝试基于tutorial创建一个Django应用程序但使用不同的模型。(第一次使用Djanago)

我正处于您更改“管理”面板以添加具有从属外键的3个项目的部分。

我知道问题来自

class EventAdmin(admin.ModelAdmin):

在admin.py的第10行,但我不确定如何安排字段使其工作。

管理面板工作,直到我尝试创建一个有3个选项的事件。然后我收到以下错误... 强制转换为Unicode:需要字符串或缓冲区,找到位置

代码如下......

models.py

from django.db import models

class Location(models.Model):
    icon = models.CharField(max_length=200)
    location = models.CharField(max_length=200)

    def __unicode__(self):
        return self.location

class Event(models.Model):
    location = models.ForeignKey(Location)
    info = models.CharField(max_length=200)

    def __unicode__(self):
        return self.location

class Choice(models.Model):
    event = models.ForeignKey(Event)
    choice = models.CharField(max_length=200)
    link = models.CharField(max_length=200)

    def __unicode__(self):
        return self.choice

admin.py

from map.models import Location
from map.models import Event
from map.models import Choice
from django.contrib import admin

class ChoiceInline(admin.StackedInline):
    model = Choice
    extra = 4

class EventAdmin(admin.ModelAdmin):
    fieldsets = [
             (None,               {'fields': ['location', 'info']}),
             ]
    inlines = [ChoiceInline]

admin.site.register(Event, EventAdmin)
admin.site.register(Location)

1 个答案:

答案 0 :(得分:4)

.__unicode__()方法应返回unicode个对象。

您的Event.__unicode__()会返回self.locationLocation个实例。要么将self.location投射到unicode,要么明确引用Location对象中的字段。

def __unicode__(self):
    return u'%s' % (self.location, )

def __unicode__(self):
    return self.location.location