diff --git a/frappe/model/base_document.py b/frappe/model/base_document.py index a0f692f630..83d3d70eea 100644 --- a/frappe/model/base_document.py +++ b/frappe/model/base_document.py @@ -153,6 +153,9 @@ class BaseDocument(object): value = [] self.set(key, value) + if limit and isinstance(value, (list, tuple)) and len(value) > limit: + value = value[:limit] + return value else: return self.__dict__ diff --git a/frappe/tests/test_document.py b/frappe/tests/test_document.py index 4d399a9c94..18f104c28d 100644 --- a/frappe/tests/test_document.py +++ b/frappe/tests/test_document.py @@ -264,7 +264,10 @@ class TestDocument(unittest.TestCase): def test_limit_for_get(self): doc = frappe.get_doc("DocType", "DocType") - # assuming DocType has more that 3 Data fields + # assuming DocType has more than 3 Data fields + self.assertEquals(len(doc.get("fields", limit=3)), 3) + + # limit with filters self.assertEquals(len(doc.get("fields", filters={"fieldtype": "Data"}, limit=3)), 3) def test_virtual_fields(self):