Lorsque vous développez une application personnalisée sur Dokos, il est courant d'ajouter des champs personnalisés via des fichiers de configuration (custom_fields). Dokos propose désormais une fonction dédiée pour supprimer ces champs par code, utile lors de migrations, de mises à jour de modules ou de nettoyages de données.
delete_custom_fieldsLa fonction delete_custom_fields est disponible dans le module frappe.custom.doctype.custom_field.custom_field. Elle permet de supprimer un ou plusieurs champs personnalisés associés à des types de formulaires spécifiques.
Utilisation réservée aux développeurs
Cette fonction est destinée aux développeurs qui construisent ou maintiennent des applications sur Dodock/Dokos. Elle ne s'utilise pas depuis l'interface utilisateur.
from frappe.custom.doctype.custom_field.custom_field import delete_custom_fields
delete_custom_fields(custom_fields, ignore_if_not_exists=True)
| Paramètre | Type | Description |
|---|---|---|
custom_fields | dict | Dictionnaire associant un nom de DocType à une liste de définitions de champs (chaque définition doit contenir au minimum la clé fieldname) |
ignore_if_not_exists | bool | Si True (valeur par défaut), aucune erreur n'est levée si le champ n'existe pas. Si False, une exception est déclenchée pour tout champ manquant. |
from frappe.custom.doctype.custom_field.custom_field import delete_custom_fields
delete_custom_fields({
"Customer": [
{"fieldname": "custom_loyalty_tier"}
]
})
Dans cet exemple, le champ custom_loyalty_tier est supprimé du DocType Customer. Si le champ n'existe pas, aucune erreur n'est levée (comportement par défaut).
from frappe.custom.doctype.custom_field.custom_field import delete_custom_fields
delete_custom_fields({
"Customer": [
{"fieldname": "custom_loyalty_tier"},
{"fieldname": "custom_account_manager"}
],
"Sales Invoice": [
{"fieldname": "custom_campaign_code"}
]
})
from frappe.custom.doctype.custom_field.custom_field import delete_custom_fields
delete_custom_fields(
{
"Supplier": [
{"fieldname": "custom_supplier_category"}
]
},
ignore_if_not_exists=False
)
Avec ignore_if_not_exists=False, une exception est levée si custom_supplier_category n'existe pas sur Supplier. Utile pour s'assurer qu'une migration s'exécute dans un contexte précis.
patches.txt, appeler delete_custom_fields pour nettoyer les résidus d'une ancienne version.