mysql - 按 unicode 字符 🐲 或 💎 等过滤 django 查询

标签 mysql django utf8mb4

我有一个模型:

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 字符的字段,例如 🐲 或 💎 或 🔝 或 ☔️ 或 💯 等...

我在数据库中有三个奖杯:

  1. 龙 (badge=🐲)
  2. 防空工兵(徽章=☔️)
  3. 钻石玩家 (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/

相关文章:

django - 如何在Django Rest框架中的GET方法中获取Userid

python - Django 中的动态过滤器

Django/AJAX/JQuery - 无法接收 POST 响应

mysql - '𠂉' 不是有效的 unicode 字符,但在 unicode 字符集中?

MySQL char 和 varchar 字符集和存储大小

c++ - 使用 C++ 改进将数据加载到虚幻引擎中

mysql - 是否可以为特定表格的特定列启用表情符号?

php - 使用 SET NAMES utf8mb4 和 utf8 表

mysql - 可以从MySQL删除中消除 "NOT IN"子查询吗?

mysql - 使用 MySQL 设置 Django 时日期时间值不正确