def __init__(self, model_klass=None, allowed_fields=None): super(ToDict, self).__init__() self.allowed_fields = allowed_fields if model_klass: self.description = model_descriptions.build_model_to_dict_description( model_klass )
def contribute_to_class(self, key, klass): model = klass._meta.model description = build_model_to_dict_description( klass, self.related_model ) keys = set(description.keys()) for key in keys - set(self.allowed_fields or []): description.pop(key) klass.description_overrides = { (model, self.related_model): description }
def contribute_to_class(self, key, klass): model = klass._meta.model description_key = (model, None) description = build_model_to_dict_description( *description_key ) value = getattr(model, key, None) if issubclass(type(value), related.SingleRelatedObjectDescriptor): converter = get_relation_converter( key, (value.related.model, None) ) elif issubclass(type(value), related.ForeignRelatedObjectsDescriptor): converter = get_m2m_relation_converter( key, (value.related.model, None) ) else: converter = get_simple_converter(key) description[key] = converter