diff --git a/frappe/model/base_document.py b/frappe/model/base_document.py index bd8699c0d1..a9abec60a5 100644 --- a/frappe/model/base_document.py +++ b/frappe/model/base_document.py @@ -311,16 +311,7 @@ class BaseDocument: def get_db_value(self, key): return frappe.db.get_value(self.doctype, self.name, key) - def get_virtual_field_value(self, df): - fieldname = df.fieldname - - if (prop := getattr(type(self), fieldname, None)) and is_a_property(prop): - return getattr(self, fieldname) - - elif options := getattr(df, "options", None): - return self._evaluate_virtual_field_options(options) - - def get(self, key, filters=None, limit=None, default=None, ignore_virtual=False): + def get(self, key, filters=None, limit=None, default=None): if isinstance(key, dict): return _filter(self.get_all_children(), key, limit=limit) @@ -336,15 +327,6 @@ class BaseDocument: if limit and isinstance(value, list | tuple) and len(value) > limit: value = value[:limit] - if not value: - df = self.meta.get_field(key) - - is_virtual_field = getattr(df, "is_virtual", False) - ignore_virtual = ignore_virtual or key not in self.permitted_fieldnames - - if is_virtual_field and not ignore_virtual: - value = self.get_virtual_field_value(df, ignore_virtual) - return value def getone(self, key, filters=None): @@ -512,6 +494,15 @@ class BaseDocument: eval_locals={"doc": self}, ) + def get_virtual_field_value(self, df): + fieldname = df.fieldname + + if (prop := getattr(type(self), fieldname, None)) and is_a_property(prop): + return getattr(self, fieldname) + + elif options := getattr(df, "options", None): + return self._evaluate_virtual_field_options(options) + def get_valid_dict( self, sanitize=True, convert_dates_to_str=False, ignore_nulls=False, ignore_virtual=False ) -> _dict: