Database.bind_ctx preserves the binded database
Thanks for reporting. This is a bug and has to do with peewee performing redundant trips through the model graph.
I am trying to set the database at run-time. Then the Models do not have the meta class defined. That means `Model._meta.database` is `None`.  The first code below executes as I expected, after the `with` block the database parameter return to `None`. 
```python
from peewee import SqliteDatabase, Model

class TableA(Model):
    pass
class TableB(Model):
    pass

db = SqliteDatabase(':memory:')

print('before', TableA._meta.database)
with db.bind_ctx([TableA, TableB]):
    print('inside A', TableA._meta.database)
    print('inside B', TableB._meta.database)
print('after', TableA._meta.database)
```

The issue is when a third table has foreign keys to both tables. The `Model._meta.database` is not returned to `None` as I was expecting. 

```python
from peewee import SqliteDatabase, ForeignKeyField, Model

class TableA(Model):
    pass

class TableB(Model):
    pass

class TableAB(Model):
    field1 = ForeignKeyField(TableA)
    field2 = ForeignKeyField(TableB)

db = SqliteDatabase(':memory:')

print('before', TableA._meta.database)
with db.bind_ctx([TableA, TableB]):
    print('inside A', TableA._meta.database)
    
print('after', TableA._meta.database)
```

The `bind_backrefs` set to `False` solves the issue. But, is this a bug? or is the normal behavior?.  The version of peewee is `3.13.3`.

