在使用Django模型创建表时,有时候不存在或者不满足条件我们想要的表字段类型。这时我们可以继承Django模型中的Field来实现自定义字段类型。
如下所示代码创建了一个tinyint类型的字段:
# 创建自定义字段类型:tinyint
class TinyIntField(models.Field):
def __init__(self, *args, **kwargs):
self.max_length = kwargs["max_length"]
super().__init__(*args, **kwargs)
# 这个方法是创建Django中,没有的数据库字段类型
def db_type(self, connection):
return "tinyint({max_length})".format(max_length=self.max_length)
使用的时候直接如下所示:
state = TinyIntField(max_length=1, blank=False, null=False, default=-1, verbose_name='附件状态 1:已使用 -1:未使用')