Merge pull request #27553 from gavindsouza/rm-virtual-df-from-get_valid_columns

fix!: Skip virtual fields in meta.get_valid_columns
This commit is contained in:
Akhil Narang 2024-09-02 18:02:46 +05:30 committed by GitHub
commit 1af796492c
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 17 additions and 2 deletions

View file

@ -364,7 +364,7 @@ class BaseDocument:
d = _dict()
field_values = self.__dict__
for fieldname in self.meta.get_valid_columns():
for fieldname in self.meta.get_valid_fields():
value = field_values.get(fieldname)
# if no need for sanitization and value is None, continue

View file

@ -221,13 +221,28 @@ class Meta(Document):
self._valid_columns = get_table_columns(self.name)
else:
self._valid_columns = self.default_fields + [
df.fieldname for df in self.get("fields") if df.fieldtype in data_fieldtypes
df.fieldname
for df in self.get("fields")
if not df.get("is_virtual") and df.fieldtype in data_fieldtypes
]
if self.istable:
self._valid_columns += list(child_table_fields)
return self._valid_columns
def get_valid_fields(self) -> list[str]:
if not hasattr(self, "_valid_fields"):
if frappe.flags.in_install and self.name in self.special_doctypes:
self._valid_fields = get_table_columns(self.name)
else:
self._valid_fields = self.default_fields + [
df.fieldname for df in self.get("fields") if df.fieldtype in data_fieldtypes
]
if self.istable:
self._valid_fields += list(child_table_fields)
return self._valid_fields
def get_table_field_doctype(self, fieldname):
return TABLE_DOCTYPES_FOR_DOCTYPE.get(fieldname)