通过unicode字符等过滤django查询

时间:2017-07-21 10:07:33

标签: 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字符的字段,如or或or☔️等...

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

  1. 龙(徽章=)
  2. Antiaircrafter(badge =☔️)
  3. 钻石球员(徽章=)
  4. 我没有问题用徽章获得奖杯☔️:

    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吗?

1 个答案:

答案 0 :(得分:0)

通过在django settings.py中添加数据库设置的OPTIONS进行修复:

'OPTIONS': {
     'charset': 'utf8mb4',
     'use_unicode': True,
     'init_command': "SET NAMES utf8mb4;",
 }

使用命令

创建数据库
CREATE DATABASE feofun_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_520_ci;