У нас есть таблица БД mysql, которая имеет такие атрибуты, как:
+-----------------------+------------------+------+-----+-------------------+
| Field | Type | Null | Key | Default |
+-----------------------+------------------+------+-----+-------------------+
| age | int(1) | YES | | NULL |
| blah | int(1) | YES | | NULL |
Мне было любопытно узнать о int (1), и я обратился к документации, а вот описание:
M indicates the maximum display width for integer types.
The maximum legal display width is 255. Display width is
unrelated to the range of values a type can contain
[ . . . ]
Учитывая, что я хочу сохранить текущую схему, есть ли способ в Django, где мы можем указать длину отображения models.*IntegerField
?
Приложение / models.py:
from django.db import models
class Grade(models.Model):
type = models.SmallIntegerField(primary_key=True)
name = models.CharField(max_length=30)
def __unicode__(self):
return self.name
Вот сгенерированный SQL:
> python manage.py sql app
BEGIN;
CREATE TABLE `app_grade` (
`type` smallint NOT NULL PRIMARY KEY,
`name` varchar(30) NOT NULL
)
;
COMMIT;
Редактировать : Я узнал о команде manage.py inspectdb
, которая будет генерировать модель на основе существующих таблиц БД. Для рассматриваемой таблицы вывод для столбца типа int(1)
:
class table(models.Model):
[ . . . ]
columnx = models.IntegerField(null=True, db_column='columnX', blank=True) # Field name made lowercase.
[ . . . ]
Итак, Джанго считает int(M)
и IntegerField
одинаковыми. Я в порядке с этим, пока никакая информация / ограничение не потеряны. Какие здесь рекомендации?