Ошибка Юникода в Джанго - PullRequest
0 голосов
/ 27 марта 2012

Я пытаюсь внедрить CRUD в базу данных, которая будет содержать строки Unicode. Вот модели:

from django.db import models


class Category(models.Model):
    cat_name = models.CharField(max_length=100, verbose_name="Category Name")

    def __unicode__(self):
        return self.cat_name

class Translation(models.Model):
        english_term = models.TextField(verbose_name="English Term")
        bangla_term = models.TextField(verbose_name="Bangla Term")
        bangla_variant = models.TextField(verbose_name="Variant")
        parts_of_speech = models.TextField(verbose_name="Parts of Speech")
        category = models.ForeignKey(Category, verbose_name="Category")

        def __unicode__(self):
            return self.english_term

Django по умолчанию создал базу данных и таблицы с использованием latin-swedish-ci или чего-то еще. Я вручную преобразовал базу данных и таблицы в utf8-unicode-ci (извиняюсь, я знаю, что неправильно сопоставил имена параметров сортировки).

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

Warning at /admin/glossary/category/add/

Incorrect string value: '\xE0\xA6\x97\xE0\xA6\xA8...' for column 'cat_name' at row 1

Любая помощь?

Привет

Ответы [ 2 ]

1 голос
/ 27 марта 2012

Возможно, вы захотите воссоздать БД с кодировкой utf8 или проверить настроенную кодировку как на стороне клиента, так и на стороне сервера.Django не создает базу данных, вы обязаны создать ее и установить правильные параметры в настройках Django для подключения Django.Единственным исключением является серверная программа sqlite3, которая всегда использует utf8.

0 голосов
/ 27 марта 2012

Попробуйте

def __unicode__(self):
    return u'%s' % self.cat_name

в вашей модели категории.

...