尝试基于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
管理员
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)
最佳答案
.__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