Существуют выигрыши в производительности, но вот тот, который не был упомянут: миграция строки. С символом Вы резервируете все пространство заранее. Поэтому позвольте нам, говорит, что у Вас есть символ (1000), и Вы храните 10 символов, Вы израсходуете все 1 000 символов пространства. В varchar2 (1000), Вы будете только использовать 10 символов. Проблема возникает при изменении данных. Скажем, Вы обновляете столбец, чтобы теперь содержать 900 символов. Возможно, что пространство для расширения varchar не доступно в текущем блоке. В этом случае механизм DB должен переместить строку в другой блок и сделать указатель в исходном блоке к новой строке в новом блоке. Для чтения этих данных механизм DB должен будет теперь считать 2 блока.
Никто не может двусмысленно сказать, что varchar или символ лучше. Существует пространство для компромисса времени и рассмотрение того, будут ли данные обновлены, особенно если существует хороший шанс, что это вырастет.
Person._meta.get_field ('name'). Max_length
даст вам это значение. Но необходимость использования _meta
предполагает, что этого не следует делать при обычном использовании.
Изменить: как заметил Карл, такое наименование вводит в заблуждение, и его использование кажется вполне приемлемым : http://www.b-list.org/weblog/2007/nov/04/working-models/