• Usando mysql bit field en django

    View Comments

    Usando django con una db legacy en django 1.7 me encontré con el problema de leer/escribir en un campo bit en mysql y de todas las sugencias que fui encontrando por aqui y por alla, la solucion a lo que llegué fue definir un tipo de dato nuevo en django de la siguiente forma:

    class MySQLBooleanField(models.BooleanField):
        __metaclass__ = models.SubfieldBase
    
        def to_python(self, value):
            if value in (True, False):
                return value
            if value in ('t', 'True', '1', '\x01'):
                return True
            if value in ('f', 'False', '0', '\x00'):
                return False
    
        def get_db_prep_value(self, value, connection, prepared=False):
            return '\x01' if value else '\x00'
  • blog comments powered by Disqus