大家早上好(当地时间)
我在星巴克和姜戈一起工作。我遇到了一个问题,我想不出办法来解决它。
我准备保存范围在0~4之间的数据(整型),数据最大不超过255。当我阅读Django的手册时,有一个SmallIntegerField,它是4字节的整数。嗯,当我搜索PostgreSQL的手册时,有一个小整数类型,有2个字节。
但实际上,我的数据还不到1个字节。所以我想使用tinyint类型,它的范围在0到255之间。(当我在php中使用MySQL时,我使用了tinyint)如果我用4字节的整型存储那些小数据,我觉得这是一种浪费。
我想展示一些东西的雕像。例如,0表示没有卫生间。1是为残疾人而存在的厕所,2是为残疾人而不是残疾人而存在的厕所。如果我需要3个以上的选择,我不能用BooleanType覆盖它。(我遇到了一篇文章,上面说Django中的BooleanType是Tinyint。我在Django手册(版本1.10)中找不到解释,我也找不到PostgreSQL有tinyint类型。
我该如何解决这个问题?如果我只保存几个数据,我不会太在意。但是我要保存大量的数据。这似乎不是一个好主意保存数据,因为它是非常小的4字节整数类型。
感谢你阅读这篇文章。如果你对此有任何想法并给我任何建议,我将不胜感激。谢谢你!咖啡都喝完了~
发布于 2018-10-12 20:23:01
如果您真的想这样做,您可以像这样对现有字段进行子类化
from django.db import models, connection
class TinyIntegerField(models.PositiveSmallIntegerField):
description = "Tiny Integer Field"
def db_type(self, connection):
#check backend db supports tinyint
if any(_ in connection.settings_dict['ENGINE'] for _ in ['pyodbc', 'mysql']):
return 'tinyint'
else:
return 'smallint'
class Foot(models.Model):
numberoftoes = TinyIntegerField(default=5)对于带符号的正/负tinyint,您可以从models.SmallIntegerField继承,尽管sqlsever不支持负tinyint
请参阅https://docs.djangoproject.com/en/dev/howto/custom-model-fields/
https://stackoverflow.com/questions/39927487
复制相似问题