diff --git a/facho/model/fields/one2many.py b/facho/model/fields/one2many.py index 231874b..182a1b0 100644 --- a/facho/model/fields/one2many.py +++ b/facho/model/fields/one2many.py @@ -41,6 +41,9 @@ class _Relation(): def __len__(self): return len(self.relations) + def __iter__(self): + for relation in self.relations: + yield relation class One2Many(Field): def __init__(self, model, name=None, namespace=None, default=None): diff --git a/tests/test_model.py b/tests/test_model.py index 159b5d2..d588c14 100644 --- a/tests/test_model.py +++ b/tests/test_model.py @@ -442,3 +442,27 @@ def test_model_one2many_with_on_changes(): assert len(invoice.lines) == 2 assert '' == invoice.to_xml() + +def test_model_one2many_as_list(): + class Line(facho.model.Model): + __name__ = 'Line' + + quantity = fields.Attribute('quantity') + + class Invoice(facho.model.Model): + __name__ = 'Invoice' + + lines = fields.One2Many(Line) + + invoice = Invoice() + line = invoice.lines.create() + line.quantity = 3 + line = invoice.lines.create() + line.quantity = 5 + + lines = list(invoice.lines) + assert len(list(invoice.lines)) == 2 + + for line in lines: + assert isinstance(line, Line) + assert '' == invoice.to_xml()