使用Django v1.10和Postgres
有一个数据字段,可能包含符号(如\ |?),数字,字母和亚洲语言字符的混合。
用户说该字段的最大值应为15个字符。
如何使用Django和Postgres作为数据库来强制执行此操作?在postgres中,我们使用utf-8编码。
1个字符可以是数字或中文字符或英文字母
我知道在PHP中,有一个名为mb_strlen的函数。 And in python, the equivalent would be to use unicode strings
在Django方式中,强制最大字符串长度的最佳方法是什么?
答案 0 :(得分:0)
首先,您必须首先定义字符的含义。你提到了韩语,这是许多字符串长度函数误解的语言之一。
多个unicode字符可用于描述单个字素(用户感知字符),例如:
>>> len(u"한")
3
使用unicode字符串可以很容易地计算unicode字符的数量,但这与用户感知字符的数量不同。我建议您在python text length上阅读这篇文章。
如果您希望计算unicode字符而不是字形,那么它很简单。只需使用带有CharField
参数的max_length
(在您的模型和表单上)。
如果您希望将字段限制为最多15个字素,则必须让数据库字段包含更多字符,并为表单制作一些custom validation。
这种验证器的有用库可能是grapheme
,它可以计算字符串中字素的数量。