Monkeypatching works (at least in sqlalchemy declarative models, I haven't tried it with Elixir), though it exposes you to all of the standard problems with monkeypatching (the main one being that there's no guarantee that your modification to bar will remain unaltered). But it basically works, and could be a viable solution if your application is very simple.
class Foo(Entity):
bar = Field(Integer, default=-1)
bar.searchable = True
If your application is more complex, and/or it needs to be robust/reliable/maintainable-by-many over a long time, the above technique is not the way to go. Ideally you want to introduce some other object to store this additional info, an object that is completely within your control, and not at the mercy of all the behind-the-scenes stuff that sqlalchemy does with your data model classes.
For that purpose there are many ways to go. One easy choice is just to create a simple structure which will hold the additional information (boolean 'searchable' property and anything else you might want to add) in such a way that you can look it up easily when needed. For example, define a very simple class which uses nested dict()s to store any number of additional properties indexed by model class, Field name, and property name. Then create a single instance of this class, and share it throughout your app.
Having set up such a structure, you could then make use of it like so:
if extra_props[foo]['bar']['searchable']:
# do something