Yes, I want to keep as much logic as possible in data models rather than in table. I don't want to depend on SQLAlchemy or expose it too much to callers of core API. In this way, when we want to switch the database from PostgreSQL to MongoDB, BigTable or something like that, it is much easier to do as the core API model remains the same.