我有一个模型:
class Trophy(models.Model):
server = models.CharField(max_length=191, blank=True)
title = models.CharField(max_length=191, blank=True)
note = models.TextField(blank=True)
badge = models.CharField(max_length=191)
badge - 是 unicode 字符的字段,例如 🐲 或 💎 或 🔝 或 ☔️ 或 💯 等...
我在数据库中有三个奖杯:
- 龙 (badge=🐲)
- 防空工兵(徽章=☔️)
- 钻石玩家 (badge=💎)
我没有问题获得带徽章的奖杯☔️:
trophy = Trophy.objects.get(badge=u"☔️")
但我无法得到🐲或💎:
trophy = Trophy.objects.get(badge=u"🐲")
MultipleObjectsReturned: get() returned more than one Trophy -- it returned 2!
还有一件事:在运行之前,我在 MySQL Workbench 中看不到 🐲 和 💎(只有“?”):
SET NAMES utf8mb4;
知道如何在 Django 查询中使用 utf8mb4 吗?
最佳答案
通过在 django settings.py 中为数据库设置添加选项来修复:
'OPTIONS': {
'charset': 'utf8mb4',
'use_unicode': True,
'init_command': "SET NAMES utf8mb4;",
}
然后用命令创建数据库
CREATE DATABASE feofun_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_520_ci;
关于mysql - 按 unicode 字符 🐲 或 💎 等过滤 django 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45234897/