Django Admin Проблема принуждения к Unicode - PullRequest
1 голос
/ 27 сентября 2011

Попытка создать приложение Django на основе учебника , но с использованием другой модели. (Впервые с помощью Djanago)

Я нахожусь в той части, где вы изменяете панель администратора надобавьте 3 элемента с зависимым внешним ключом.

Я знаю, что проблема возникла из

class EventAdmin(admin.ModelAdmin):

в строке 10 admin.py, но я не уверен, как должны быть расположены полячтобы это работало.

Панель администратора работает, пока я не попытаюсь создать событие с 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 Ответ

4 голосов
/ 27 сентября 2011

Ожидается, что метод .__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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...