Django中未知max_length的最佳做法?

时间:2019-04-19 13:19:00

标签: python django django-models

在必须增加模型中另一个字段的max_length之后,我开始怀疑:也许不是这样吗?

我正在从外部API获取数据,所以我无法检查最大长度是多少。假设我猜测该字段可以包含100个字符-因为这很有意义,但是我不知道是否确实如此,可能会出现一个300个字符长的值。这里推荐什么方法?

1)截断该值(然后我应该将代码放在哪里?以及诸如URL之类的字段,该字段在被截断后将不起作用吗?)? 2)跳过值? 3)是否将每个字段的长度设置为100 *预期长度?

2 个答案:

答案 0 :(得分:3)

max_length的意义在于,您可以决定。如果您确实想要可变/无限制长度的文本,请改用TextField

max_length在数据库级别强制执行,如果更长,它将失败。如果要从代码端截断它,则必须自己完成,很可能是在创建条目的函数中完成。

  

请注意,许多数据库都会优化文本字段,因此,对于不同长度的文本,性能不会受到任何影响。

答案 1 :(得分:1)

扩展blue_notes响应我建议您始终使用TextField代替CharField ,除非数据类型具有基本的最大长度。例如,ISO货币代码始终完全是3个字符,并且可以作为CharField使用。

在许多情况下,如果字段长度实际上不是固定的,则使用最大长度字符字段将导致数据库性能比使用无限长度的varchar字段差。