Я столкнулся с этой ошибкой, когда обновляю столбец (текст типа данных) на django admin.py
.
unicode error happens only for update
'\\xF0\\x9F\\x98\\xA1' for column 'object_repr' at row 1
Это из-за проблемы UTF-8, когда я использую 4-байтовый символ, это происходит.
Текстовые данные (используются 4-байтовые символы) уже хранятся в базе данных mysql, а определение таблицы приведено ниже.
show create table tweet_corpus;
+--------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+--------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| tweet_corpus | CREATE TABLE `tweet_corpus` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`text` text,
`manual_judge` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2471024 DEFAULT CHARSET=utf8mb4 |
+--------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
И соединение от django к mysql utf8mb4
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'corpustest',
'USER': 'root',
'PASSWORD': 'mysql',
'HOST': '127.0.0.1',
'PORT': '3306',
'OPTIONS': {
'charset': 'utf8mb4',
}
}
}
мой admin.py такой,
class CorpusAdmin(admin.ModelAdmin):
list_display = ['text','manual_judge']
search_fields = ['text','manual_judge']
list_editable = ['manual_judge']
def _issues(self,row):
return row.id
Есть где проверить???