Django源代码中的PositiveInteger和PositiveSmallInteger字段之间没有区别。但是,Django文档说,
PositiveInteger starts from 0 to 2147483647 and PositiveSmallInteger starts from 0 to 32767.
请澄清这两种类型之间的区别。
提前致谢。
答案 0 :(得分:2)
这就是其中之一,因为它就是这样。
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',
...