| @@ -689,7 +689,6 @@ document.:: | |||||||
| .. note:: From 0.8 onwards you must declare :attr:`allow_inheritance` defaults | .. note:: From 0.8 onwards you must declare :attr:`allow_inheritance` defaults | ||||||
|           to False, meaning you must set it to True to use inheritance. |           to False, meaning you must set it to True to use inheritance. | ||||||
|  |  | ||||||
|  |  | ||||||
| Working with existing data | Working with existing data | ||||||
| -------------------------- | -------------------------- | ||||||
| As MongoEngine no longer defaults to needing :attr:`_cls` you can quickly and | As MongoEngine no longer defaults to needing :attr:`_cls` you can quickly and | ||||||
| @@ -709,3 +708,25 @@ defining all possible field types. | |||||||
|  |  | ||||||
| If you use :class:`~mongoengine.Document` and the database contains data that | If you use :class:`~mongoengine.Document` and the database contains data that | ||||||
| isn't defined then that data will be stored in the `document._data` dictionary. | isn't defined then that data will be stored in the `document._data` dictionary. | ||||||
|  |  | ||||||
|  | Abstract classes | ||||||
|  | ================ | ||||||
|  |  | ||||||
|  | If you want to add some extra functionality to a group of Document classes but | ||||||
|  | you don't need or want the overhead of inheritance you can use the | ||||||
|  | :attr:`abstract` attribute of :attr:`-mongoengine.Document.meta`. | ||||||
|  | This won't turn on :ref:`document-inheritance` but will allow you to keep your | ||||||
|  | code DRY:: | ||||||
|  |  | ||||||
|  |         class BaseDocument(Document): | ||||||
|  |             meta = { | ||||||
|  |                 'abstract': True, | ||||||
|  |             } | ||||||
|  |             def check_permissions(self): | ||||||
|  |                 ... | ||||||
|  |  | ||||||
|  |         class User(BaseDocument): | ||||||
|  |            ... | ||||||
|  |  | ||||||
|  | Now the User class will have access to the inherited `check_permissions` method | ||||||
|  | and won't store any of the extra `_cls` information. | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user