List fields

List of objects.

class Doc(Document):
    __collection__ = 'docs'
    integers = fields.ListField(fields.IntegerField)

doc = Doc()
doc.integers.append(1)
doc.integers.append(2)
assert doc.integers == [1, 2]

db.insert(doc)
doc = db.get_queryset(Doc).find_one(doc.id)  # reload

doc.integers.append(3)  # do not save
assert doc.integers == [1, 2, 3]
doc = db.get_queryset(Doc).find_one(doc.id)  # reload
assert doc.integers == [1, 2]

doc.integers.remove(2)  # do not save too
assert doc.integers == [1]
doc = db.get_queryset(Doc).find_one(doc.id)  # reload
assert doc.integers == [1, 2]

doc.integers.push(3)  # $push query
assert doc.integers == [1, 2, 3]
doc = db.get_queryset(Doc).find_one(doc.id)  # reload
assert doc.integers == [1, 2, 3]

doc.integers.pull(2)  # $pull query
assert doc.integers == [1, 3]
doc = db.get_queryset(Doc).find_one(doc.id)  # reload
assert doc.integers == [1, 3]
class yadm.fields.list.List(field, parent, value)

Container for list.

append(item)

Append item to list.

Parameters:item – item for append

This method does not save object!

insert(index, item)

Append item to list.

Parameters:
  • index (int) –
  • item – item for insert

This method does not save object!

pull(query, reload=True)

Pull item from database.

Parameters:
  • query – query for $pull on this field
  • reload (bool) – automatically reload all values from database

See $pull in MongoDB’s update.

push(item, reload=True)

Push item directly to database.

Parameters:
  • item – item for $push
  • reload (bool) – automatically reload all values from database

See $push in MongoDB’s update.

remove(item)

Remove item from list.

Parameters:item – item for remove

This method does not save object!

replace(query, item, reload=True)

Replace list elements.

Parameters:
  • query – query for update. Keys of this query is relative.
  • item – embedded document or dict
  • reload (bool) – automatically reload all values from database
update(query, values, reload=True)

Update fields in embedded documents.

Parameters:
  • query – query for update. Keys of this query is relative.
  • values – dict of new values
  • reload (bool) – automatically reload all values from database
class yadm.fields.list.ListField(item_field=None, *, auto_create=True, **kwargs)

Field for list values.

For example, document with list of integers:

class TestDoc(Document):
    __collection__ = 'testdoc'
    li = fields.ListField(fields.IntegerField())
container

alias of List