这是其中的一件事,因为它是那样的。
Django 支持SmallIntegerField,因为 Django 在 PostgreSQL 上长大,而 PostgreSQL 支持 smallint。 PosgreSQL docs 说
smallint 类型通常仅在磁盘空间非常宝贵的情况下使用。
如果您检查 Django 的backends,代码也会有所不同。您会看到它在某些数据库上使用了SMALLINT 功能,例如sqlite。
...
class FlexibleFieldLookupDict:
# Maps SQL types to Django Field types. Some of the SQL types have multiple
# entries here because SQLite allows for anything and doesn't normalize the
# field type; it uses whatever was given.
base_data_types_reverse = {
'bool': 'BooleanField',
'boolean': 'BooleanField',
'smallint': 'SmallIntegerField',
'smallint unsigned': 'PositiveSmallIntegerField',
'smallinteger': 'SmallIntegerField',
'int': 'IntegerField',
'integer': 'IntegerField',
'bigint': 'BigIntegerField',
'integer unsigned': 'PositiveIntegerField',
'decimal': 'DecimalField',
'real': 'FloatField',
...