title: Lightweight Mongodb ODM/ORM for Python
body: <p>I'm looking for MondoDB Python ODM/ORM that takes the best from two worlds: <em>ODM/ORM &amp; ultra fast direct dictionary read.</em></p>
  
  <p>In other words package shall comply with following requirements:</p>
  
  <ol>
  <li>Allows to define and enforce schema.</li>
  <li>Allows to validate fields.</li>
  <li>Allows to read objects directly from mongodb (no ODM/ORM overhead).
  <ul>
  <li>Collections/objects returned directly by pymongo can be accessed using ODM/ORM layer (w/o extra queries).</li>
  <li>I would imagine some kind of lazy field added by pymongo driver to objects that provides access to ORM juice (pymongo allows for such extensions).</li>
  <li>Imagine use case: 
  <ul>
  <li>For fast read we go directly to driver, </li>
  <li>For data entry we use full ODM/ORM functionality</li>
  </ul></li>
  </ul></li>
  <li>Geofields support</li>
  <li>GridFS support of normal files and images</li>
  <li>DBRef support</li>
  <li>Does not enforce any hidden, framework specific fields</li>
  <li>Will work with Flask :)</li>
  <li>Has forms framework.
  <ul>
  <li>Forms cover sublists/subdicts</li>
  <li>Backbone based forms would be just awesome</li>
  </ul></li>
  <li>Creates backbone models, collections, validators based of python definition</li>
  </ol>
  
  <p>I know that I'm asking for much but wouldn't it be awesome to have something like this :)</p>
  
  <p>In fact question could be rephrased into:
  "Which of existing Python Mongodb ODM/ORMs (MongoKit, MongoEngine) could be easily extended this way."</p>