【问题标题】:Django Admin Problem Coercing to UnicodeDjango 管理员问题强制转换为 Unicode
【发布时间】:2011-11-25 12:21:17
【问题描述】:

尝试基于 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)

【问题讨论】:

    标签: python django django-admin


    【解决方案1】:

    .__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
    

    【讨论】:

    • +1。并认为返回 self.location.location 是一种不好的形式 - 第一个将 Location 转换为 unicode 字符串的示例更可取。
    猜你喜欢
    • 2011-11-06
    • 2011-06-02
    • 2016-07-18
    • 1970-01-01
    • 2011-01-09
    • 1970-01-01
    • 2012-03-31
    • 2012-12-23
    • 1970-01-01
    相关资源
    最近更新 更多