Django Admin 强制转换为 Unicode 的问题
我正在尝试创建一个基于教程的Django应用,但使用了不同的模型。(这是我第一次使用Django)
现在我到了修改管理面板的部分,想要添加三个有依赖关系的选项。
我知道问题出在
class EventAdmin(admin.ModelAdmin):
admin.py文件的第10行,但我不太确定字段应该怎么排列才能让它正常工作。
管理面板在我尝试创建一个有三个选择的事件之前都能正常工作。然后我就遇到了以下错误... 转换为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 个回答
4
.__unicode__()
方法应该返回一个 unicode
对象。
但是你的 Event.__unicode__()
方法返回的是 self.location
,而这个是一个 Location
实例。你可以把 self.location
转换成 unicode
,或者直接引用 Location
对象中的某个字段。
def __unicode__(self):
return u'%s' % (self.location, )
def __unicode__(self):
return self.location.location