Map field¶
Map.
class Doc(Document):
__collection__ = 'docs'
map = fields.MapField(fields.IntegerField)
doc = Doc()
doc.map['a'] = 1
doc.map['b'] = 2
assert doc.map == {'a': 1, 'b': 2}
db.insert(doc)
doc = db.get_queryset(Doc).find_one(doc.id) # reload
doc.map['c'] = 3 # do not save
assert doc.map == {'a': 1, 'b': 2, 'c': 3}
doc = db.get_queryset(Doc).find_one(doc.id) # reload
assert doc.map == {'a': 1, 'b': 2}
del doc.map['b'] # do not save too
assert doc.map == {'a': 1}
doc = db.get_queryset(Doc).find_one(doc.id) # reload
assert doc.map == {'a': 1, 'b': 2}
doc.map.set('d', 3) # $set query
assert doc.map == {'a': 1, 'b': 2, 'c': 3}
doc = db.get_queryset(Doc).find_one(doc.id) # reload
assert doc.map == {'a': 1, 'b': 2, 'c': 3}
doc.map.unset('d', 3) # $unset query
assert doc.map == {'a': 1, 'b': 2}
doc = db.get_queryset(Doc).find_one(doc.id) # reload
assert doc.map == {'a': 1, 'b': 2}
-
class
yadm.fields.map.
Map
(field, parent, value)¶ Map.
-
set
(key, value, reload=True)¶ Set key directly in database.
Parameters: - key – key
- value – value for $set
See $set in MongoDB’s set.
-
unset
(key, reload=True)¶ Unset key directly in database.
Parameters: key – key See $unset in MongoDB’s unset.
-
-
class
yadm.fields.map.
MapCustomKeysField
(item_field, key_factory, *, key_to_str=<class 'str'>, auto_create=True, **kwargs)¶ Field for maps with custom key type.
Parameters: - item_field (field) –
- key_factory (func) – function, who return thue key from raw string key
- key_to_str (func) –
- auto_create (bool) –