def __init__(self, *args, **kwargs):
        """
        Extract prefetches and default fields from Meta
        """
        # TODO: move this to a meta class, to evaluate once when defining the
        # class
        # TODO: This is not efficient - 2016-01-20

        serializer_class = self.get_serializer_class()
        serializer = serializer_class()  # need an instance to extract fields
        model = serializer_class.Meta.model

        assert issubclass(
            serializer_class, DynamicFieldsModelSerializer
        ) or issubclass(serializer_class, DynamicFieldsSerializer), (
            "serializer class must be an instance of \
             DynamicFieldsModelSerializer " "instead got %s"
        ) % (serializer_class.__name__,)

        self.serializer_fields = serializer.fields.keys()

        self.select_related_fields = [
            field.name for field in model._meta.fields
            if isinstance(field, (ForeignKey, OneToOneField))
        ]

        self.field_source_mapping = {
            field.field_name: field.source
            for field in serializer.fields.values()
            if isinstance(
                field, (ForeignKey, OneToOneField)
            )
        }