Example #1
0
    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
            )
Example #2
0
    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
        }
Example #3
0
    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