jazzband / jsonmodels

jsonmodels is library to make it easier for you to deal with structures that are converted to, or read from JSON.
http://jsonmodels.readthedocs.org/en/latest/
BSD 3-Clause "New" or "Revised" License
334 stars 51 forks source link

Nullable is not working in to_struct() #140

Open buriedguns opened 3 years ago

buriedguns commented 3 years ago
class Person(models.Base):
    nickname = fields.StringField(nullable=True)
person = Person()
>>> person.to_struct()
{
    'nickname': None,
}

If you try to reproduce the example above from your documentation (Person with nullable Nickname to_struct()) it will return nothing, and not a 'nickname': None.

That's because there's no nullable verification in parser.py to_struct() function. Could you add it please, like in the example below?

def to_struct(model):
    """Cast instance of model to python structure.

    :param model: Model to be casted.
    :rtype: ``dict``

    """
    model.validate()

    resp = {}
    for _, name, field in model.iterate_with_name():
        value = field.__get__(model)
        if value is None and not field.nullable:
            continue

        value = field.to_struct(value)
        resp[name] = value
    return resp
beregond commented 3 years ago

Hey, thanks @buriedguns - I understand the problem, will look into it :)