Сбой администратора django при попытке обновить запись, но не при вставке новой - PullRequest
1 голос
/ 12 апреля 2011

У меня странная проблема:

техническая информация для developmnt (производство будет на linux / apache / Mysql) macosx 2.6.6 python 2.6.1 django 1.3 mysql 5.1 и MySQLdb для подключения pythonна MySQL ...

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

ОК, вопрос.Я делаю учебник по django (не для удовольствия, мне нужно выучить его очень быстро, потому что мне нужно разработать огромную систему с ним).

Я делал все уроки до сих пор и на той стадии, когдая добавил администратора.

Когда я пытаюсь отредактировать запись опроса (если кто-либо знает учебник django 1.3), сайт падает со следующим исключением:

Предупреждение в / admin/ polls / poll / 2 / Неверное строковое значение: '\ xD7 \ xA9 \ xD7 \ x95 \ xD7 \ xA0 ...' для столбца 'change_message' в строке 1

проблем нетдобавление новой записи в ту же таблицу, просто для ее редактирования ....

если кто-нибудь что-нибудь знает об этом ....

# Create your models here.

класс Poll (models.Model): question = models.CharField (max_length = 200) pub_date = models.DateTimeField ('дата публикации')

def __unicode__(self):
    return self.question

def was_published_today(self):
    return self.pub_date.date() == datetime.date.today()

Это модель, и еще одна, которую я видел, моя БД MySQL - это latin1, а неUTF-8 ... python - это юникод .... может быть в этом проблема ....

Но все же я не могу понять, почему я могу добавить решнуры, но не могут их редактировать ... разве это не странная часть?

Ответы [ 4 ]

4 голосов
/ 26 октября 2012

У меня возникла та же проблема, но я использовал Django 1.4. Я использовал рекомендацию фотоионизирован , но адаптирован к этой версии (там, где нет auth_message, но вы можете найти change_message в django_admin_log). Итак:

ALTER TABLE django_admin_log CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
1 голос
/ 12 апреля 2011

Откройте оболочку mysql и выполните следующее:

mysql> show variables like  'character\_set\_%';

Существуют ли какие-либо значения utf8 сверху?

Предполагая, что это проблема mysql, обменяйте настройки БД на sqlite3:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': 'database.sqlite3',           
        'USER': '',                      
        'PASSWORD': '',                  
        'HOST': '',                     
        'PORT': '',                   
    }
}

Синхронизируйте и попробуйте снова ввести некоторые данные.

1 голос
/ 12 апреля 2011

Звучит как проблема с набором символов базы данных. Можете ли вы проверить набор символов по умолчанию таблицы auth_message в вашей базе данных?

Если ваша таблица не может обработать utf8, она выдаст эту ошибку.

0 голосов
/ 07 мая 2012

Найдите столбец «change_message» в таблице «django_admin_log». Измените набор символов на utf-8 по умолчанию. Готово

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...