872 lines
39 KiB
ReStructuredText
872 lines
39 KiB
ReStructuredText
=========
|
|
Changelog
|
|
=========
|
|
|
|
Development
|
|
===========
|
|
- (Fill this out as you fix issues and develop your features).
|
|
|
|
Changes in 0.14.0
|
|
=================
|
|
- BREAKING CHANGE: Removed the `coerce_types` param from `QuerySet.as_pymongo` #1549
|
|
- POTENTIAL BREAKING CHANGE: Made EmbeddedDocument not hashable by default #1528
|
|
- Improved code quality #1531, #1540, #1541, #1547
|
|
|
|
Changes in 0.13.0
|
|
=================
|
|
- POTENTIAL BREAKING CHANGE: Added Unicode support to the `EmailField`, see
|
|
docs/upgrade.rst for details.
|
|
|
|
Changes in 0.12.0
|
|
=================
|
|
- POTENTIAL BREAKING CHANGE: Fixed limit/skip/hint/batch_size chaining #1476
|
|
- POTENTIAL BREAKING CHANGE: Changed a public `QuerySet.clone_into` method to a private `QuerySet._clone_into` #1476
|
|
- Fixed the way `Document.objects.create` works with duplicate IDs #1485
|
|
- Fixed connecting to a replica set with PyMongo 2.x #1436
|
|
- Fixed using sets in field choices #1481
|
|
- Fixed deleting items from a `ListField` #1318
|
|
- Fixed an obscure error message when filtering by `field__in=non_iterable`. #1237
|
|
- Fixed behavior of a `dec` update operator #1450
|
|
- Added a `rename` update operator #1454
|
|
- Added validation for the `db_field` parameter #1448
|
|
- Fixed the error message displayed when querying an `EmbeddedDocumentField` by an invalid value #1440
|
|
- Fixed the error message displayed when validating unicode URLs #1486
|
|
- Raise an error when trying to save an abstract document #1449
|
|
|
|
Changes in 0.11.0
|
|
=================
|
|
- BREAKING CHANGE: Renamed `ConnectionError` to `MongoEngineConnectionError` since the former is a built-in exception name in Python v3.x. #1428
|
|
- BREAKING CHANGE: Dropped Python 2.6 support. #1428
|
|
- BREAKING CHANGE: `from mongoengine.base import ErrorClass` won't work anymore for any error from `mongoengine.errors` (e.g. `ValidationError`). Use `from mongoengine.errors import ErrorClass instead`. #1428
|
|
- BREAKING CHANGE: Accessing a broken reference will raise a `DoesNotExist` error. In the past it used to return `None`. #1334
|
|
- Fixed absent rounding for DecimalField when `force_string` is set. #1103
|
|
|
|
Changes in 0.10.8
|
|
=================
|
|
- Added support for QuerySet.batch_size (#1426)
|
|
- Fixed query set iteration within iteration #1427
|
|
- Fixed an issue where specifying a MongoDB URI host would override more information than it should #1421
|
|
- Added ability to filter the generic reference field by ObjectId and DBRef #1425
|
|
- Fixed delete cascade for models with a custom primary key field #1247
|
|
- Added ability to specify an authentication mechanism (e.g. X.509) #1333
|
|
- Added support for falsey primary keys (e.g. doc.pk = 0) #1354
|
|
- Fixed QuerySet#sum/average for fields w/ explicit db_field #1417
|
|
- Fixed filtering by embedded_doc=None #1422
|
|
- Added support for cursor.comment #1420
|
|
- Fixed doc.get_<field>_display #1419
|
|
- Fixed __repr__ method of the StrictDict #1424
|
|
- Added a deprecation warning for Python 2.6
|
|
|
|
Changes in 0.10.7
|
|
=================
|
|
- Dropped Python 3.2 support #1390
|
|
- Fixed the bug where dynamic doc has index inside a dict field #1278
|
|
- Fixed: ListField minus index assignment does not work #1128
|
|
- Fixed cascade delete mixing among collections #1224
|
|
- Add `signal_kwargs` argument to `Document.save`, `Document.delete` and `BaseQuerySet.insert` to be passed to signals calls #1206
|
|
- Raise `OperationError` when trying to do a `drop_collection` on document with no collection set.
|
|
- count on ListField of EmbeddedDocumentField fails. #1187
|
|
- Fixed long fields stored as int32 in Python 3. #1253
|
|
- MapField now handles unicodes keys correctly. #1267
|
|
- ListField now handles negative indicies correctly. #1270
|
|
- Fixed AttributeError when initializing EmbeddedDocument with positional args. #681
|
|
- Fixed no_cursor_timeout error with pymongo 3.0+ #1304
|
|
- Replaced map-reduce based QuerySet.sum/average with aggregation-based implementations #1336
|
|
- Fixed support for `__` to escape field names that match operators names in `update` #1351
|
|
- Fixed BaseDocument#_mark_as_changed #1369
|
|
- Added support for pickling QuerySet instances. #1397
|
|
- Fixed connecting to a list of hosts #1389
|
|
- Fixed a bug where accessing broken references wouldn't raise a DoesNotExist error #1334
|
|
- Fixed not being able to specify use_db_field=False on ListField(EmbeddedDocumentField) instances #1218
|
|
- Improvements to the dictionary fields docs #1383
|
|
|
|
Changes in 0.10.6
|
|
=================
|
|
- Add support for mocking MongoEngine based on mongomock. #1151
|
|
- Fixed not being able to run tests on Windows. #1153
|
|
- Allow creation of sparse compound indexes. #1114
|
|
- count on ListField of EmbeddedDocumentField fails. #1187
|
|
|
|
Changes in 0.10.5
|
|
=================
|
|
- Fix for reloading of strict with special fields. #1156
|
|
|
|
Changes in 0.10.4
|
|
=================
|
|
- SaveConditionError is now importable from the top level package. #1165
|
|
- upsert_one method added. #1157
|
|
|
|
Changes in 0.10.3
|
|
=================
|
|
- Fix `read_preference` (it had chaining issues with PyMongo 2.x and it didn't work at all with PyMongo 3.x) #1042
|
|
|
|
Changes in 0.10.2
|
|
=================
|
|
- Allow shard key to point to a field in an embedded document. #551
|
|
- Allow arbirary metadata in fields. #1129
|
|
- ReferenceFields now support abstract document types. #837
|
|
|
|
Changes in 0.10.1
|
|
=================
|
|
- Fix infinite recursion with CASCADE delete rules under specific conditions. #1046
|
|
- Fix CachedReferenceField bug when loading cached docs as DBRef but failing to save them. #1047
|
|
- Fix ignored chained options #842
|
|
- Document save's save_condition error raises `SaveConditionError` exception #1070
|
|
- Fix Document.reload for DynamicDocument. #1050
|
|
- StrictDict & SemiStrictDict are shadowed at init time. #1105
|
|
- Fix ListField minus index assignment does not work. #1119
|
|
- Remove code that marks field as changed when the field has default but not existed in database #1126
|
|
- Remove test dependencies (nose and rednose) from install dependencies list. #1079
|
|
- Recursively build query when using elemMatch operator. #1130
|
|
- Fix instance back references for lists of embedded documents. #1131
|
|
|
|
Changes in 0.10.0
|
|
=================
|
|
- Django support was removed and will be available as a separate extension. #958
|
|
- Allow to load undeclared field with meta attribute 'strict': False #957
|
|
- Support for PyMongo 3+ #946
|
|
- Removed get_or_create() deprecated since 0.8.0. #300
|
|
- Improve Document._created status when switch collection and db #1020
|
|
- Queryset update doesn't go through field validation #453
|
|
- Added support for specifying authentication source as option `authSource` in URI. #967
|
|
- Fixed mark_as_changed to handle higher/lower level fields changed. #927
|
|
- ListField of embedded docs doesn't set the _instance attribute when iterating over it #914
|
|
- Support += and *= for ListField #595
|
|
- Use sets for populating dbrefs to dereference
|
|
- Fixed unpickled documents replacing the global field's list. #888
|
|
- Fixed storage of microseconds in ComplexDateTimeField and unused separator option. #910
|
|
- Don't send a "cls" option to ensureIndex (related to https://jira.mongodb.org/browse/SERVER-769)
|
|
- Fix for updating sorting in SortedListField. #978
|
|
- Added __ support to escape field name in fields lookup keywords that match operators names #949
|
|
- Fix for issue where FileField deletion did not free space in GridFS.
|
|
- No_dereference() not respected on embedded docs containing reference. #517
|
|
- Document save raise an exception if save_condition fails #1005
|
|
- Fixes some internal _id handling issue. #961
|
|
- Updated URL and Email Field regex validators, added schemes argument to URLField validation. #652
|
|
- Capped collection multiple of 256. #1011
|
|
- Added `BaseQuerySet.aggregate_sum` and `BaseQuerySet.aggregate_average` methods.
|
|
- Fix for delete with write_concern {'w': 0}. #1008
|
|
- Allow dynamic lookup for more than two parts. #882
|
|
- Added support for min_distance on geo queries. #831
|
|
- Allow to add custom metadata to fields #705
|
|
|
|
Changes in 0.9.0
|
|
================
|
|
- Update FileField when creating a new file #714
|
|
- Added `EmbeddedDocumentListField` for Lists of Embedded Documents. #826
|
|
- ComplexDateTimeField should fall back to None when null=True #864
|
|
- Request Support for $min, $max Field update operators #863
|
|
- `BaseDict` does not follow `setdefault` #866
|
|
- Add support for $type operator # 766
|
|
- Fix tests for pymongo 2.8+ #877
|
|
- No module named 'django.utils.importlib' (Django dev) #872
|
|
- Field Choices Now Accept Subclasses of Documents
|
|
- Ensure Indexes before Each Save #812
|
|
- Generate Unique Indices for Lists of EmbeddedDocuments #358
|
|
- Sparse fields #515
|
|
- write_concern not in params of Collection#remove #801
|
|
- Better BaseDocument equality check when not saved #798
|
|
- OperationError: Shard Keys are immutable. Tried to update id even though the document is not yet saved #771
|
|
- with_limit_and_skip for count should default like in pymongo #759
|
|
- Fix storing value of precision attribute in DecimalField #787
|
|
- Set attribute to None does not work (at least for fields with default values) #734
|
|
- Querying by a field defined in a subclass raises InvalidQueryError #744
|
|
- Add Support For MongoDB 2.6.X's maxTimeMS #778
|
|
- abstract shouldn't be inherited in EmbeddedDocument # 789
|
|
- Allow specifying the '_cls' as a field for indexes #397
|
|
- Stop ensure_indexes running on a secondaries unless connection is through mongos #746
|
|
- Not overriding default values when loading a subset of fields #399
|
|
- Saving document doesn't create new fields in existing collection #620
|
|
- Added `Queryset.aggregate` wrapper to aggregation framework #703
|
|
- Added support to show original model fields on to_json calls instead of db_field #697
|
|
- Added Queryset.search_text to Text indexes searchs #700
|
|
- Fixed tests for Django 1.7 #696
|
|
- Follow ReferenceFields in EmbeddedDocuments with select_related #690
|
|
- Added preliminary support for text indexes #680
|
|
- Added `elemMatch` operator as well - `match` is too obscure #653
|
|
- Added support for progressive JPEG #486 #548
|
|
- Allow strings to be used in index creation #675
|
|
- Fixed EmbeddedDoc weakref proxy issue #592
|
|
- Fixed nested reference field distinct error #583
|
|
- Fixed change tracking on nested MapFields #539
|
|
- Dynamic fields in embedded documents now visible to queryset.only() / qs.exclude() #425 #507
|
|
- Add authentication_source option to register_connection #178 #464 #573 #580 #590
|
|
- Implemented equality between Documents and DBRefs #597
|
|
- Fixed ReferenceField inside nested ListFields dereferencing problem #368
|
|
- Added the ability to reload specific document fields #100
|
|
- Added db_alias support and fixes for custom map/reduce output #586
|
|
- post_save signal now has access to delta information about field changes #594 #589
|
|
- Don't query with $orderby for qs.get() #600
|
|
- Fix id shard key save issue #636
|
|
- Fixes issue with recursive embedded document errors #557
|
|
- Fix clear_changed_fields() clearing unsaved documents bug #602
|
|
- Removing support for Django 1.4.x, pymongo 2.5.x, pymongo 2.6.x.
|
|
- Removing support for Python < 2.6.6
|
|
- Fixed $maxDistance location for geoJSON $near queries with MongoDB 2.6+ #664
|
|
- QuerySet.modify() and Document.modify() methods to provide find_and_modify() like behaviour #677 #773
|
|
- Added support for the using() method on a queryset #676
|
|
- PYPY support #673
|
|
- Connection pooling #674
|
|
- Avoid to open all documents from cursors in an if stmt #655
|
|
- Ability to clear the ordering #657
|
|
- Raise NotUniqueError in Document.update() on pymongo.errors.DuplicateKeyError #626
|
|
- Slots - memory improvements #625
|
|
- Fixed incorrectly split a query key when it ends with "_" #619
|
|
- Geo docs updates #613
|
|
- Workaround a dateutil bug #608
|
|
- Conditional save for atomic-style operations #511
|
|
- Allow dynamic dictionary-style field access #559
|
|
- Increase email field length to accommodate new TLDs #726
|
|
- index_cls is ignored when deciding to set _cls as index prefix #733
|
|
- Make 'db' argument to connection optional #737
|
|
- Allow atomic update for the entire `DictField` #742
|
|
- Added MultiPointField, MultiLineField, MultiPolygonField
|
|
- Fix multiple connections aliases being rewritten #748
|
|
- Fixed a few instances where reverse_delete_rule was written as reverse_delete_rules. #791
|
|
- Make `in_bulk()` respect `no_dereference()` #775
|
|
- Handle None from model __str__; Fixes #753 #754
|
|
- _get_changed_fields fix for embedded documents with id field. #925
|
|
|
|
Changes in 0.8.7
|
|
================
|
|
- Calling reload on deleted / nonexistent documents raises DoesNotExist (#538)
|
|
- Stop ensure_indexes running on a secondaries (#555)
|
|
- Fix circular import issue with django auth (#531) (#545)
|
|
|
|
Changes in 0.8.6
|
|
================
|
|
- Fix django auth import (#531)
|
|
|
|
Changes in 0.8.5
|
|
================
|
|
- Fix multi level nested fields getting marked as changed (#523)
|
|
- Django 1.6 login fix (#522) (#527)
|
|
- Django 1.6 session fix (#509)
|
|
- EmbeddedDocument._instance is now set when setting the attribute (#506)
|
|
- Fixed EmbeddedDocument with ReferenceField equality issue (#502)
|
|
- Fixed GenericReferenceField serialization order (#499)
|
|
- Fixed count and none bug (#498)
|
|
- Fixed bug with .only() and DictField with digit keys (#496)
|
|
- Added user_permissions to Django User object (#491, #492)
|
|
- Fix updating Geo Location fields (#488)
|
|
- Fix handling invalid dict field value (#485)
|
|
- Added app_label to MongoUser (#484)
|
|
- Use defaults when host and port are passed as None (#483)
|
|
- Fixed distinct casting issue with ListField of EmbeddedDocuments (#470)
|
|
- Fixed Django 1.6 sessions (#454, #480)
|
|
|
|
Changes in 0.8.4
|
|
================
|
|
- Remove database name necessity in uri connection schema (#452)
|
|
- Fixed "$pull" semantics for nested ListFields (#447)
|
|
- Allow fields to be named the same as query operators (#445)
|
|
- Updated field filter logic - can now exclude subclass fields (#443)
|
|
- Fixed dereference issue with embedded listfield referencefields (#439)
|
|
- Fixed slice when using inheritance causing fields to be excluded (#437)
|
|
- Fixed ._get_db() attribute after a Document.switch_db() (#441)
|
|
- Dynamic Fields store and recompose Embedded Documents / Documents correctly (#449)
|
|
- Handle dynamic fieldnames that look like digits (#434)
|
|
- Added get_user_document and improve mongo_auth module (#423)
|
|
- Added str representation of GridFSProxy (#424)
|
|
- Update transform to handle docs erroneously passed to unset (#416)
|
|
- Fixed indexing - turn off _cls (#414)
|
|
- Fixed dereference threading issue in ComplexField.__get__ (#412)
|
|
- Fixed QuerySetNoCache.count() caching (#410)
|
|
- Don't follow references in _get_changed_fields (#422, #417)
|
|
- Allow args and kwargs to be passed through to_json (#420)
|
|
|
|
Changes in 0.8.3
|
|
================
|
|
- Fixed EmbeddedDocuments with `id` also storing `_id` (#402)
|
|
- Added get_proxy_object helper to filefields (#391)
|
|
- Added QuerySetNoCache and QuerySet.no_cache() for lower memory consumption (#365)
|
|
- Fixed sum and average mapreduce dot notation support (#375, #376, #393)
|
|
- Fixed as_pymongo to return the id (#386)
|
|
- Document.select_related() now respects `db_alias` (#377)
|
|
- Reload uses shard_key if applicable (#384)
|
|
- Dynamic fields are ordered based on creation and stored in _fields_ordered (#396)
|
|
|
|
**Potential breaking change:** http://docs.mongoengine.org/en/latest/upgrade.html#to-0-8-3
|
|
|
|
- Fixed pickling dynamic documents `_dynamic_fields` (#387)
|
|
- Fixed ListField setslice and delslice dirty tracking (#390)
|
|
- Added Django 1.5 PY3 support (#392)
|
|
- Added match ($elemMatch) support for EmbeddedDocuments (#379)
|
|
- Fixed weakref being valid after reload (#374)
|
|
- Fixed queryset.get() respecting no_dereference (#373)
|
|
- Added full_result kwarg to update (#380)
|
|
|
|
|
|
|
|
Changes in 0.8.2
|
|
================
|
|
- Added compare_indexes helper (#361)
|
|
- Fixed cascading saves which weren't turned off as planned (#291)
|
|
- Fixed Datastructures so instances are a Document or EmbeddedDocument (#363)
|
|
- Improved cascading saves write performance (#361)
|
|
- Fixed ambiguity and differing behaviour regarding field defaults (#349)
|
|
- ImageFields now include PIL error messages if invalid error (#353)
|
|
- Added lock when calling doc.Delete() for when signals have no sender (#350)
|
|
- Reload forces read preference to be PRIMARY (#355)
|
|
- Querysets are now lest restrictive when querying duplicate fields (#332, #333)
|
|
- FileField now honouring db_alias (#341)
|
|
- Removed customised __set__ change tracking in ComplexBaseField (#344)
|
|
- Removed unused var in _get_changed_fields (#347)
|
|
- Added pre_save_post_validation signal (#345)
|
|
- DateTimeField now auto converts valid datetime isostrings into dates (#343)
|
|
- DateTimeField now uses dateutil for parsing if available (#343)
|
|
- Fixed Doc.objects(read_preference=X) not setting read preference (#352)
|
|
- Django session ttl index expiry fixed (#329)
|
|
- Fixed pickle.loads (#342)
|
|
- Documentation fixes
|
|
|
|
Changes in 0.8.1
|
|
================
|
|
- Fixed Python 2.6 django auth importlib issue (#326)
|
|
- Fixed pickle unsaved document regression (#327)
|
|
|
|
Changes in 0.8.0
|
|
================
|
|
- Fixed querying ReferenceField custom_id (#317)
|
|
- Fixed pickle issues with collections (#316)
|
|
- Added `get_next_value` preview for SequenceFields (#319)
|
|
- Added no_sub_classes context manager and queryset helper (#312)
|
|
- Querysets now utilises a local cache
|
|
- Changed __len__ behaviour in the queryset (#247, #311)
|
|
- Fixed querying string versions of ObjectIds issue with ReferenceField (#307)
|
|
- Added $setOnInsert support for upserts (#308)
|
|
- Upserts now possible with just query parameters (#309)
|
|
- Upserting is the only way to ensure docs are saved correctly (#306)
|
|
- Fixed register_delete_rule inheritance issue
|
|
- Fix cloning of sliced querysets (#303)
|
|
- Fixed update_one write concern (#302)
|
|
- Updated minimum requirement for pymongo to 2.5
|
|
- Add support for new geojson fields, indexes and queries (#299)
|
|
- If values cant be compared mark as changed (#287)
|
|
- Ensure as_pymongo() and to_json honour only() and exclude() (#293)
|
|
- Document serialization uses field order to ensure a strict order is set (#296)
|
|
- DecimalField now stores as float not string (#289)
|
|
- UUIDField now stores as a binary by default (#292)
|
|
- Added Custom User Model for Django 1.5 (#285)
|
|
- Cascading saves now default to off (#291)
|
|
- ReferenceField now store ObjectId's by default rather than DBRef (#290)
|
|
- Added ImageField support for inline replacements (#86)
|
|
- Added SequenceField.set_next_value(value) helper (#159)
|
|
- Updated .only() behaviour - now like exclude it is chainable (#202)
|
|
- Added with_limit_and_skip support to count() (#235)
|
|
- Objects queryset manager now inherited (#256)
|
|
- Updated connection to use MongoClient (#262, #274)
|
|
- Fixed db_alias and inherited Documents (#143)
|
|
- Documentation update for document errors (#124)
|
|
- Deprecated `get_or_create` (#35)
|
|
- Updated inheritable objects created by upsert now contain _cls (#118)
|
|
- Added support for creating documents with embedded documents in a single operation (#6)
|
|
- Added to_json and from_json to Document (#1)
|
|
- Added to_json and from_json to QuerySet (#131)
|
|
- Updated index creation now tied to Document class (#102)
|
|
- Added none() to queryset (#127)
|
|
- Updated SequenceFields to allow post processing of the calculated counter value (#141)
|
|
- Added clean method to documents for pre validation data cleaning (#60)
|
|
- Added support setting for read prefrence at a query level (#157)
|
|
- Added _instance to EmbeddedDocuments pointing to the parent (#139)
|
|
- Inheritance is off by default (#122)
|
|
- Remove _types and just use _cls for inheritance (#148)
|
|
- Only allow QNode instances to be passed as query objects (#199)
|
|
- Dynamic fields are now validated on save (#153) (#154)
|
|
- Added support for multiple slices and made slicing chainable. (#170) (#190) (#191)
|
|
- Fixed GridFSProxy __getattr__ behaviour (#196)
|
|
- Fix Django timezone support (#151)
|
|
- Simplified Q objects, removed QueryTreeTransformerVisitor (#98) (#171)
|
|
- FileFields now copyable (#198)
|
|
- Querysets now return clones and are no longer edit in place (#56)
|
|
- Added support for $maxDistance (#179)
|
|
- Uses getlasterror to test created on updated saves (#163)
|
|
- Fixed inheritance and unique index creation (#140)
|
|
- Fixed reverse delete rule with inheritance (#197)
|
|
- Fixed validation for GenericReferences which haven't been dereferenced
|
|
- Added switch_db context manager (#106)
|
|
- Added switch_db method to document instances (#106)
|
|
- Added no_dereference context manager (#82) (#61)
|
|
- Added switch_collection context manager (#220)
|
|
- Added switch_collection method to document instances (#220)
|
|
- Added support for compound primary keys (#149) (#121)
|
|
- Fixed overriding objects with custom manager (#58)
|
|
- Added no_dereference method for querysets (#82) (#61)
|
|
- Undefined data should not override instance methods (#49)
|
|
- Added Django Group and Permission (#142)
|
|
- Added Doc class and pk to Validation messages (#69)
|
|
- Fixed Documents deleted via a queryset don't call any signals (#105)
|
|
- Added the "get_decoded" method to the MongoSession class (#216)
|
|
- Fixed invalid choices error bubbling (#214)
|
|
- Updated Save so it calls $set and $unset in a single operation (#211)
|
|
- Fixed inner queryset looping (#204)
|
|
|
|
Changes in 0.7.10
|
|
=================
|
|
- Fix UnicodeEncodeError for dbref (#278)
|
|
- Allow construction using positional parameters (#268)
|
|
- Updated EmailField length to support long domains (#243)
|
|
- Added 64-bit integer support (#251)
|
|
- Added Django sessions TTL support (#224)
|
|
- Fixed issue with numerical keys in MapField(EmbeddedDocumentField()) (#240)
|
|
- Fixed clearing _changed_fields for complex nested embedded documents (#237, #239, #242)
|
|
- Added "id" back to _data dictionary (#255)
|
|
- Only mark a field as changed if the value has changed (#258)
|
|
- Explicitly check for Document instances when dereferencing (#261)
|
|
- Fixed order_by chaining issue (#265)
|
|
- Added dereference support for tuples (#250)
|
|
- Resolve field name to db field name when using distinct(#260, #264, #269)
|
|
- Added kwargs to doc.save to help interop with django (#223, #270)
|
|
- Fixed cloning querysets in PY3
|
|
- Int fields no longer unset in save when changed to 0 (#272)
|
|
- Fixed ReferenceField query chaining bug fixed (#254)
|
|
|
|
Changes in 0.7.9
|
|
================
|
|
- Better fix handling for old style _types
|
|
- Embedded SequenceFields follow collection naming convention
|
|
|
|
Changes in 0.7.8
|
|
================
|
|
- Fix sequence fields in embedded documents (#166)
|
|
- Fix query chaining with .order_by() (#176)
|
|
- Added optional encoding and collection config for Django sessions (#180, #181, #183)
|
|
- Fixed EmailField so can add extra validation (#173, #174, #187)
|
|
- Fixed bulk inserts can now handle custom pk's (#192)
|
|
- Added as_pymongo method to return raw or cast results from pymongo (#193)
|
|
|
|
Changes in 0.7.7
|
|
================
|
|
- Fix handling for old style _types
|
|
|
|
Changes in 0.7.6
|
|
================
|
|
- Unicode fix for repr (#133)
|
|
- Allow updates with match operators (#144)
|
|
- Updated URLField - now can have a override the regex (#136)
|
|
- Allow Django AuthenticationBackends to work with Django user (hmarr/mongoengine#573)
|
|
- Fixed reload issue with ReferenceField where dbref=False (#138)
|
|
|
|
Changes in 0.7.5
|
|
================
|
|
- ReferenceFields with dbref=False use ObjectId instead of strings (#134)
|
|
See ticket for upgrade notes (#134)
|
|
|
|
Changes in 0.7.4
|
|
================
|
|
- Fixed index inheritance issues - firmed up testcases (#123) (#125)
|
|
|
|
Changes in 0.7.3
|
|
================
|
|
- Reverted EmbeddedDocuments meta handling - now can turn off inheritance (#119)
|
|
|
|
Changes in 0.7.2
|
|
================
|
|
- Update index spec generation so its not destructive (#113)
|
|
|
|
Changes in 0.7.1
|
|
================
|
|
- Fixed index spec inheritance (#111)
|
|
|
|
Changes in 0.7.0
|
|
================
|
|
- Updated queryset.delete so you can use with skip / limit (#107)
|
|
- Updated index creation allows kwargs to be passed through refs (#104)
|
|
- Fixed Q object merge edge case (#109)
|
|
- Fixed reloading on sharded documents (hmarr/mongoengine#569)
|
|
- Added NotUniqueError for duplicate keys (#62)
|
|
- Added custom collection / sequence naming for SequenceFields (#92)
|
|
- Fixed UnboundLocalError in composite index with pk field (#88)
|
|
- Updated ReferenceField's to optionally store ObjectId strings
|
|
this will become the default in 0.8 (#89)
|
|
- Added FutureWarning - save will default to `cascade=False` in 0.8
|
|
- Added example of indexing embedded document fields (#75)
|
|
- Fixed ImageField resizing when forcing size (#80)
|
|
- Add flexibility for fields handling bad data (#78)
|
|
- Embedded Documents no longer handle meta definitions
|
|
- Use weakref proxies in base lists / dicts (#74)
|
|
- Improved queryset filtering (hmarr/mongoengine#554)
|
|
- Fixed Dynamic Documents and Embedded Documents (hmarr/mongoengine#561)
|
|
- Fixed abstract classes and shard keys (#64)
|
|
- Fixed Python 2.5 support
|
|
- Added Python 3 support (thanks to Laine Heron)
|
|
|
|
Changes in 0.6.20
|
|
=================
|
|
- Added support for distinct and db_alias (#59)
|
|
- Improved support for chained querysets when constraining the same fields (hmarr/mongoengine#554)
|
|
- Fixed BinaryField lookup re (#48)
|
|
|
|
Changes in 0.6.19
|
|
=================
|
|
|
|
- Added Binary support to UUID (#47)
|
|
- Fixed MapField lookup for fields without declared lookups (#46)
|
|
- Fixed BinaryField python value issue (#48)
|
|
- Fixed SequenceField non numeric value lookup (#41)
|
|
- Fixed queryset manager issue (#52)
|
|
- Fixed FileField comparision (hmarr/mongoengine#547)
|
|
|
|
Changes in 0.6.18
|
|
=================
|
|
- Fixed recursion loading bug in _get_changed_fields
|
|
|
|
Changes in 0.6.17
|
|
=================
|
|
- Fixed issue with custom queryset manager expecting explict variable names
|
|
|
|
Changes in 0.6.16
|
|
=================
|
|
- Fixed issue where db_alias wasn't inherited
|
|
|
|
Changes in 0.6.15
|
|
=================
|
|
- Updated validation error messages
|
|
- Added support for null / zero / false values in item_frequencies
|
|
- Fixed cascade save edge case
|
|
- Fixed geo index creation through reference fields
|
|
- Added support for args / kwargs when using @queryset_manager
|
|
- Deref list custom id fix
|
|
|
|
Changes in 0.6.14
|
|
=================
|
|
- Fixed error dict with nested validation
|
|
- Fixed Int/Float fields and not equals None
|
|
- Exclude tests from installation
|
|
- Allow tuples for index meta
|
|
- Fixed use of str in instance checks
|
|
- Fixed unicode support in transform update
|
|
- Added support for add_to_set and each
|
|
|
|
Changes in 0.6.13
|
|
=================
|
|
- Fixed EmbeddedDocument db_field validation issue
|
|
- Fixed StringField unicode issue
|
|
- Fixes __repr__ modifying the cursor
|
|
|
|
Changes in 0.6.12
|
|
=================
|
|
- Fixes scalar lookups for primary_key
|
|
- Fixes error with _delta handling DBRefs
|
|
|
|
Changes in 0.6.11
|
|
=================
|
|
- Fixed inconsistency handling None values field attrs
|
|
- Fixed map_field embedded db_field issue
|
|
- Fixed .save() _delta issue with DbRefs
|
|
- Fixed Django TestCase
|
|
- Added cmp to Embedded Document
|
|
- Added PULL reverse_delete_rule
|
|
- Fixed CASCADE delete bug
|
|
- Fixed db_field data load error
|
|
- Fixed recursive save with FileField
|
|
|
|
Changes in 0.6.10
|
|
=================
|
|
- Fixed basedict / baselist to return super(..)
|
|
- Promoted BaseDynamicField to DynamicField
|
|
|
|
Changes in 0.6.9
|
|
================
|
|
- Fixed sparse indexes on inherited docs
|
|
- Removed FileField auto deletion, needs more work maybe 0.7
|
|
|
|
Changes in 0.6.8
|
|
================
|
|
- Fixed FileField losing reference when no default set
|
|
- Removed possible race condition from FileField (grid_file)
|
|
- Added assignment to save, can now do: `b = MyDoc(**kwargs).save()`
|
|
- Added support for pull operations on nested EmbeddedDocuments
|
|
- Added support for choices with GenericReferenceFields
|
|
- Added support for choices with GenericEmbeddedDocumentFields
|
|
- Fixed Django 1.4 sessions first save data loss
|
|
- FileField now automatically delete files on .delete()
|
|
- Fix for GenericReference to_mongo method
|
|
- Fixed connection regression
|
|
- Updated Django User document, now allows inheritance
|
|
|
|
Changes in 0.6.7
|
|
================
|
|
- Fixed indexing on '_id' or 'pk' or 'id'
|
|
- Invalid data from the DB now raises a InvalidDocumentError
|
|
- Cleaned up the Validation Error - docs and code
|
|
- Added meta `auto_create_index` so you can disable index creation
|
|
- Added write concern options to inserts
|
|
- Fixed typo in meta for index options
|
|
- Bug fix Read preference now passed correctly
|
|
- Added support for File like objects for GridFS
|
|
- Fix for #473 - Dereferencing abstracts
|
|
|
|
Changes in 0.6.6
|
|
================
|
|
- Django 1.4 fixed (finally)
|
|
- Added tests for Django
|
|
|
|
Changes in 0.6.5
|
|
================
|
|
- More Django updates
|
|
|
|
Changes in 0.6.4
|
|
================
|
|
|
|
- Refactored connection / fixed replicasetconnection
|
|
- Bug fix for unknown connection alias error message
|
|
- Sessions support Django 1.3 and Django 1.4
|
|
- Minor fix for ReferenceField
|
|
|
|
Changes in 0.6.3
|
|
================
|
|
- Updated sessions for Django 1.4
|
|
- Bug fix for updates where listfields contain embedded documents
|
|
- Bug fix for collection naming and mixins
|
|
|
|
Changes in 0.6.2
|
|
================
|
|
- Updated documentation for ReplicaSet connections
|
|
- Hack round _types issue with SERVER-5247 - querying other arrays may also cause problems.
|
|
|
|
Changes in 0.6.1
|
|
================
|
|
- Fix for replicaSet connections
|
|
|
|
Changes in 0.6
|
|
==============
|
|
|
|
- Added FutureWarning to inherited classes not declaring 'allow_inheritance' as the default will change in 0.7
|
|
- Added support for covered indexes when inheritance is off
|
|
- No longer always upsert on save for items with a '_id'
|
|
- Error raised if update doesn't have an operation
|
|
- DeReferencing is now thread safe
|
|
- Errors raised if trying to perform a join in a query
|
|
- Updates can now take __raw__ queries
|
|
- Added custom 2D index declarations
|
|
- Added replicaSet connection support
|
|
- Updated deprecated imports from pymongo (safe for pymongo 2.2)
|
|
- Added uri support for connections
|
|
- Added scalar for efficiently returning partial data values (aliased to values_list)
|
|
- Fixed limit skip bug
|
|
- Improved Inheritance / Mixin
|
|
- Added sharding support
|
|
- Added pymongo 2.1 support
|
|
- Fixed Abstract documents can now declare indexes
|
|
- Added db_alias support to individual documents
|
|
- Fixed GridFS documents can now be pickled
|
|
- Added Now raises an InvalidDocumentError when declaring multiple fields with the same db_field
|
|
- Added InvalidQueryError when calling with_id with a filter
|
|
- Added support for DBRefs in distinct()
|
|
- Fixed issue saving False booleans
|
|
- Fixed issue with dynamic documents deltas
|
|
- Added Reverse Delete Rule support to ListFields - MapFields aren't supported
|
|
- Added customisable cascade kwarg options
|
|
- Fixed Handle None values for non-required fields
|
|
- Removed Document._get_subclasses() - no longer required
|
|
- Fixed bug requiring subclasses when not actually needed
|
|
- Fixed deletion of dynamic data
|
|
- Added support for the $elementMatch operator
|
|
- Added reverse option to SortedListFields
|
|
- Fixed dereferencing - multi directional list dereferencing
|
|
- Fixed issue creating indexes with recursive embedded documents
|
|
- Fixed recursive lookup in _unique_with_indexes
|
|
- Fixed passing ComplexField defaults to constructor for ReferenceFields
|
|
- Fixed validation of DictField Int keys
|
|
- Added optional cascade saving
|
|
- Fixed dereferencing - max_depth now taken into account
|
|
- Fixed document mutation saving issue
|
|
- Fixed positional operator when replacing embedded documents
|
|
- Added Non-Django Style choices back (you can have either)
|
|
- Fixed __repr__ of a sliced queryset
|
|
- Added recursive validation error of documents / complex fields
|
|
- Fixed breaking during queryset iteration
|
|
- Added pre and post bulk-insert signals
|
|
- Added ImageField - requires PIL
|
|
- Fixed Reference Fields can be None in get_or_create / queries
|
|
- Fixed accessing pk on an embedded document
|
|
- Fixed calling a queryset after drop_collection now recreates the collection
|
|
- Add field name to validation exception messages
|
|
- Added UUID field
|
|
- Improved efficiency of .get()
|
|
- Updated ComplexFields so if required they won't accept empty lists / dicts
|
|
- Added spec file for rpm-based distributions
|
|
- Fixed ListField so it doesnt accept strings
|
|
- Added DynamicDocument and EmbeddedDynamicDocument classes for expando schemas
|
|
|
|
Changes in v0.5.2
|
|
=================
|
|
|
|
- A Robust Circular reference bugfix
|
|
|
|
|
|
Changes in v0.5.1
|
|
=================
|
|
|
|
- Fixed simple circular reference bug
|
|
|
|
Changes in v0.5
|
|
===============
|
|
|
|
- Added InvalidDocumentError - so Document core methods can't be overwritten
|
|
- Added GenericEmbeddedDocument - so you can embed any type of embeddable document
|
|
- Added within_polygon support - for those with mongodb 1.9
|
|
- Updated sum / average to use map_reduce as db.eval doesn't work in sharded environments
|
|
- Added where() - filter to allowing users to specify query expressions as Javascript
|
|
- Added SequenceField - for creating sequential counters
|
|
- Added update() convenience method to a document
|
|
- Added cascading saves - so changes to Referenced documents are saved on .save()
|
|
- Added select_related() support
|
|
- Added support for the positional operator
|
|
- Updated geo index checking to be recursive and check in embedded documents
|
|
- Updated default collection naming convention
|
|
- Added Document Mixin support
|
|
- Fixed queryet __repr__ mid iteration
|
|
- Added hint() support, so can tell Mongo the proper index to use for the query
|
|
- Fixed issue with inconsistent setting of _cls breaking inherited referencing
|
|
- Added help_text and verbose_name to fields to help with some form libs
|
|
- Updated item_frequencies to handle embedded document lookups
|
|
- Added delta tracking now only sets / unsets explicitly changed fields
|
|
- Fixed saving so sets updated values rather than overwrites
|
|
- Added ComplexDateTimeField - Handles datetimes correctly with microseconds
|
|
- Added ComplexBaseField - for improved flexibility and performance
|
|
- Added get_FIELD_display() method for easy choice field displaying
|
|
- Added queryset.slave_okay(enabled) method
|
|
- Updated queryset.timeout(enabled) and queryset.snapshot(enabled) to be chainable
|
|
- Added insert method for bulk inserts
|
|
- Added blinker signal support
|
|
- Added query_counter context manager for tests
|
|
- Added map_reduce method item_frequencies and set as default (as db.eval doesn't work in sharded environments)
|
|
- Added inline_map_reduce option to map_reduce
|
|
- Updated connection exception so it provides more info on the cause.
|
|
- Added searching multiple levels deep in ``DictField``
|
|
- Added ``DictField`` entries containing strings to use matching operators
|
|
- Added ``MapField``, similar to ``DictField``
|
|
- Added Abstract Base Classes
|
|
- Added Custom Objects Managers
|
|
- Added sliced subfields updating
|
|
- Added ``NotRegistered`` exception if dereferencing ``Document`` not in the registry
|
|
- Added a write concern for ``save``, ``update``, ``update_one`` and ``get_or_create``
|
|
- Added slicing / subarray fetching controls
|
|
- Fixed various unique index and other index issues
|
|
- Fixed threaded connection issues
|
|
- Added spherical geospatial query operators
|
|
- Updated queryset to handle latest version of pymongo
|
|
map_reduce now requires an output.
|
|
- Added ``Document`` __hash__, __ne__ for pickling
|
|
- Added ``FileField`` optional size arg for read method
|
|
- Fixed ``FileField`` seek and tell methods for reading files
|
|
- Added ``QuerySet.clone`` to support copying querysets
|
|
- Fixed item_frequencies when using name thats the same as a native js function
|
|
- Added reverse delete rules
|
|
- Fixed issue with unset operation
|
|
- Fixed Q-object bug
|
|
- Added ``QuerySet.all_fields`` resets previous .only() and .exclude()
|
|
- Added ``QuerySet.exclude``
|
|
- Added django style choices
|
|
- Fixed order and filter issue
|
|
- Added ``QuerySet.only`` subfield support
|
|
- Added creation_counter to ``BaseField`` allowing fields to be sorted in the
|
|
way the user has specified them
|
|
- Fixed various errors
|
|
- Added many tests
|
|
|
|
Changes in v0.4
|
|
===============
|
|
- Added ``GridFSStorage`` Django storage backend
|
|
- Added ``FileField`` for GridFS support
|
|
- New Q-object implementation, which is no longer based on Javascript
|
|
- Added ``SortedListField``
|
|
- Added ``EmailField``
|
|
- Added ``GeoPointField``
|
|
- Added ``exact`` and ``iexact`` match operators to ``QuerySet``
|
|
- Added ``get_document_or_404`` and ``get_list_or_404`` Django shortcuts
|
|
- Added new query operators for Geo queries
|
|
- Added ``not`` query operator
|
|
- Added new update operators: ``pop`` and ``add_to_set``
|
|
- Added ``__raw__`` query parameter
|
|
- Added support for custom querysets
|
|
- Fixed document inheritance primary key issue
|
|
- Added support for querying by array element position
|
|
- Base class can now be defined for ``DictField``
|
|
- Fixed MRO error that occured on document inheritance
|
|
- Added ``QuerySet.distinct``, ``QuerySet.create``, ``QuerySet.snapshot``,
|
|
``QuerySet.timeout`` and ``QuerySet.all``
|
|
- Subsequent calls to ``connect()`` now work
|
|
- Introduced ``min_length`` for ``StringField``
|
|
- Fixed multi-process connection issue
|
|
- Other minor fixes
|
|
|
|
Changes in v0.3
|
|
===============
|
|
- Added MapReduce support
|
|
- Added ``contains``, ``startswith`` and ``endswith`` query operators (and
|
|
case-insensitive versions that are prefixed with 'i')
|
|
- Deprecated fields' ``name`` parameter, replaced with ``db_field``
|
|
- Added ``QuerySet.only`` for only retrieving specific fields
|
|
- Added ``QuerySet.in_bulk()`` for bulk querying using ids
|
|
- ``QuerySet``\ s now have a ``rewind()`` method, which is called automatically
|
|
when the iterator is exhausted, allowing ``QuerySet``\ s to be reused
|
|
- Added ``DictField``
|
|
- Added ``URLField``
|
|
- Added ``DecimalField``
|
|
- Added ``BinaryField``
|
|
- Added ``GenericReferenceField``
|
|
- Added ``get()`` and ``get_or_create()`` methods to ``QuerySet``
|
|
- ``ReferenceField``\ s may now reference the document they are defined on
|
|
(recursive references) and documents that have not yet been defined
|
|
- ``Document`` objects may now be compared for equality (equal if _ids are
|
|
equal and documents are of same type)
|
|
- ``QuerySet`` update methods now have an ``upsert`` parameter
|
|
- Added field name substitution for Javascript code (allows the user to use the
|
|
Python names for fields in JS, which are later substituted for the real field
|
|
names)
|
|
- ``Q`` objects now support regex querying
|
|
- Fixed bug where referenced documents within lists weren't properly
|
|
dereferenced
|
|
- ``ReferenceField``\ s may now be queried using their _id
|
|
- Fixed bug where ``EmbeddedDocuments`` couldn't be non-polymorphic
|
|
- ``queryset_manager`` functions now accept two arguments -- the document class
|
|
as the first and the queryset as the second
|
|
- Fixed bug where ``QuerySet.exec_js`` ignored ``Q`` objects
|
|
- Other minor fixes
|
|
|
|
Changes in v0.2.2
|
|
=================
|
|
- Fixed bug that prevented indexes from being used on ``ListField``\ s
|
|
- ``Document.filter()`` added as an alias to ``Document.__call__()``
|
|
- ``validate()`` may now be used on ``EmbeddedDocument``\ s
|
|
|
|
Changes in v0.2.1
|
|
=================
|
|
- Added a MongoEngine backend for Django sessions
|
|
- Added ``force_insert`` to ``Document.save()``
|
|
- Improved querying syntax for ``ListField`` and ``EmbeddedDocumentField``
|
|
- Added support for user-defined primary keys (``_id`` in MongoDB)
|
|
|
|
Changes in v0.2
|
|
===============
|
|
- Added ``Q`` class for building advanced queries
|
|
- Added ``QuerySet`` methods for atomic updates to documents
|
|
- Fields may now specify ``unique=True`` to enforce uniqueness across a
|
|
collection
|
|
- Added option for default document ordering
|
|
- Fixed bug in index definitions
|
|
|
|
Changes in v0.1.3
|
|
=================
|
|
- Added Django authentication backend
|
|
- Added ``Document.meta`` support for indexes, which are ensured just before
|
|
querying takes place
|
|
- A few minor bugfixes
|
|
|
|
|
|
Changes in v0.1.2
|
|
=================
|
|
- Query values may be processed before before being used in queries
|
|
- Made connections lazy
|
|
- Fixed bug in Document dictionary-style access
|
|
- Added ``BooleanField``
|
|
- Added ``Document.reload()`` method
|
|
|
|
|
|
Changes in v0.1.1
|
|
=================
|
|
- Documents may now use capped collections
|