如何在 Django 模型选择中使用 unicode 字符?

Posted

技术标签:

【中文标题】如何在 Django 模型选择中使用 unicode 字符?【英文标题】:How to have unicode characters in Django model choices? 【发布时间】:2015-07-11 17:40:50 【问题描述】:

我正在尝试在字段选择中使用特殊字符。我有以下代码:

CHOICES = (('1', 'b'),
                ('2', 'p'),
                ('3', 'm'),
                ...
                ('11', 'ɾ'),
                ...)
field = models.CharField(choices=CHOICES, max_length=10, null=True, blank=True)

但是,当 Django 呈现该字段的选择列表时,我得到的是:

<option value="11">&amp;#638;</option>

我尝试手动打印特殊字符并且它有效。但出于某种原因,Django 正在将 &amp;amp; 转换为 &amp;amp;

【问题讨论】:

【参考方案1】:

使用 Python Unicode 对象作为标签:

CHOICES = (('1', 'b'),
                ('2', 'p'),
                ('3', 'm'),
                ...
                ('11', u'\u027e'),
                ...)

Django 会在渲染时对字符进行编码。

【讨论】:

以上是关于如何在 Django 模型选择中使用 unicode 字符?的主要内容,如果未能解决你的问题,请参考以下文章

在 ModelChoiceField Django 中使用 __unicode__ 以外的方法

django模型中的__str__()方法和__unicode__()方法

django - 模型 unicode() 显示外键对象属性

如何从 Django 中的 __unicode__() 函数中查询数据差异

关于django模型里面的__str__和__unicode

Django - 在管理页面中显示“模型对象”而不是对象标题