class Person: id = fields.IntegerField('id', is_pk=True) name = fields.TextField('name', required=True) age = fields.IntegerField('age', required=True) money = fields.RealField('money', required=False, default=0.0) item_amount = fields.IntegerField('i_amount', required=True, default=100)
def __deserialize(self, dictionary): cls = None if '__type__' in dictionary: mod_name = dictionary['__type__']['module'] cls_name = dictionary['__type__']['class'] mod = import_module(mod_name) cls = getattr(mod, cls_name) del dictionary['__type__'] deserialized = dict() for key, value in dictionary.items(): if type(value) == dict: deserialized[key] = fields.ObjectField(self.deserialize(value)) elif type(value) == list: deserialized[key] = fields.ListField( [self.deserialize(v) for v in value]) elif type(value) == int: deserialized[key] = fields.IntegerField(value) elif type(value) == float: deserialized[key] = fields.FloatField(value) else: deserialized[key] = fields.StringField(value) if cls: return fields.ObjectField(cls(**deserialized)) else: return deserialized
class MyModelStub(Model): id = fields.IntegerField(primary_key=True, choices=[1, 2]) choice_otm_field = fields.OneToManyField(TargetModelStub, on_delete=None)
class TargetModelStub(Model): primary_key_field = fields.IntegerField(primary_key=True) ordinary_field = fields.IntegerField() my_model_stub_id = fields.IntegerField(choices=[1, 2, 3])
class MyModelStub(Model): id = fields.IntegerField(primary_key=True) my_model_stub_id = fields.IntegerField() otm_field = fields.OneToManyField('MyModelStub', on_delete=None) mto_field = fields.ManyToOneField('MyModelStub', on_delete=None)
class Person: id = fields.IntegerField('id', is_pk=True)
class Person: id = fields.IntegerField('id', is_pk=True) name = fields.TextField('name', required=False)
class Person: id = fields.IntegerField('id', is_pk=True) name = fields.TextField('name')
class Person: id = fields.IntegerField('id', is_pk=True) name = fields.TextField('name', required=True) age = fields.IntegerField('age', required=False, default=20)
class ModelStubNoPrimary(Model): primary_key_field = fields.IntegerField(primary_key=False) request_field = fields.IntegerField() virtual_field = fields.IntegerField(virtual=True)
class ModelStub(Model): primary_key_field2 = fields.IntegerField(primary_key=True)
class AnotherModelStub(model_stub_class): some_field = fields.IntegerField()
class AnotherModelStub(Model): primary_key_field = fields.IntegerField(primary_key=True)