我还是PythonDjango的新手,偶然发现了一些我不懂的东西。
首先,我的模型中的一个片段:(修剪了所有其他字段…)
class AircraftTypes(AbstractBaseModel):
...
engines_count = models.PositiveSmallIntegerField(default = 1)
...
这里是mysql workbench在迁移过程之后创建的屏幕截图。
截图\u mysql\u workbench
我本来希望看到一些链接unsigned tinyint的东西,但是为什么django要创建一个varchar(1)?
毫不奇怪,当我尝试输入103这样的数字时,它失败了,出现mysql错误“1406”。数据对于“列”太长。
有人能告诉我这里发生了什么事吗?
顺便说一句,我不介意把数字存储成文本,因为它可以工作,但可能效率不高。但我不明白的是一个角色的限制是从哪里来的。是我的默认值变得疯狂了吗?
请帮忙!!!
弗洛里安
编辑
只是尝试了一些其他的组合:
engines_count = models.PositiveSmallIntegerField()
--> VARCHAR(1)
engines_count = models.PositiveIntegerField()
--> INT(10)
engines_count = models.PositiveIntegerField(default=1)
--> INT(10)
所以我得出结论,默认值在这里没有任何作用(正如预期的…)。但我错过了哪一点?django文档说positivesmallintegerfield可以保存0到32767之间的值,这对于varchar(1)肯定不起作用。
那么,我还想念什么呢?
暂无答案!
目前还没有任何答案,快来回答吧!