django如何匹配mysql数据类型?

jutyujz0  于 2021-06-18  发布在  Mysql
关注(0)|答案(0)|浏览(198)

我还是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)肯定不起作用。
那么,我还想念什么呢?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题