diff --git a/frappe/model/base_document.py b/frappe/model/base_document.py index ea4264212b..a386313dc2 100644 --- a/frappe/model/base_document.py +++ b/frappe/model/base_document.py @@ -149,6 +149,9 @@ class BaseDocument(object): self.set(key, []) value = self.__dict__.get(key) + 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 a0c44c5c72..71af7e996f 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):