diff --git a/frappe/core/doctype/doctype/test_doctype.py b/frappe/core/doctype/doctype/test_doctype.py index 93505b393a..bfead2aabc 100644 --- a/frappe/core/doctype/doctype/test_doctype.py +++ b/frappe/core/doctype/doctype/test_doctype.py @@ -796,6 +796,14 @@ class TestDocType(IntegrationTestCase): ) self.assertRaises(frappe.ValidationError, recursive_dt.insert) + def test_meta_serialization(self): + doctype = new_doctype( + fields=[{"fieldname": "some_fieldname", "fieldtype": "Data", "set_only_once": 1}] + ).insert() + doc = frappe.new_doc(doctype.name, some_fieldname="something").insert() + doc.save() + frappe.get_meta(doctype.name).as_dict() + def new_doctype( name: str | None = None, diff --git a/frappe/model/meta.py b/frappe/model/meta.py index da688b52fd..5725dcf2bd 100644 --- a/frappe/model/meta.py +++ b/frappe/model/meta.py @@ -188,6 +188,8 @@ class Meta(Document): def as_dict(self, no_nulls=False): def serialize(doc): + if isinstance(doc, dict): + return doc.copy() out = {} for key, value in doc.__dict__.items(): if isinstance(value, list | tuple):