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()