Documentation Frappe Framework

Frappe Framework

Créer un DocType

Quatrième étape du tutoriel : création du DocType Article dans le bureau (Desk), puis tour d’horizon de ce que Frappe génère automatiquement (table, vues, code).

6 min de lectureMis à jour le Source : docs.frappe.io

Qu’est-ce qu’un DocType

Un DocType est l’équivalent d’un modèle (Model) dans d’autres frameworks. En plus de définir les propriétés du modèle, il en définit aussi le comportement.

Activer le mode développeur

Avant de créer des DocTypes, il faut activer le mode développeur (developer mode) sur le bench. Ainsi, Frappe génère le code de base (boilerplate) à la création de chaque DocType, et ces fichiers peuvent être suivis dans le gestionnaire de versions avec votre app.

Dans votre terminal, arrêtez le serveur bench s’il tourne, puis lancez les commandes suivantes depuis le dossier frappe-bench :

terminal
bench set-config -g developer_mode true
bench start

Créer un DocType

Dans le bureau (Desk), ouvrez la liste des DocTypes (DocType List) à l’aide de la barre de recherche Awesomebar. Cette liste regroupe les DocTypes fournis avec le framework, ceux des apps Frappe installées et les DocTypes personnalisés (custom), que vous pouvez créer pour chaque site.

Le premier DocType à créer s’appelle Article. Cliquez sur New, puis :

  1. Saisissez Article comme nom.
  2. Sélectionnez Library Management dans le champ Module.
  3. Ajoutez les champs suivants dans la table Fields :
Libellé du champTypeRemarque
Article NameDataObligatoire (Mandatory)
ImageAttach Image
AuthorData
DescriptionText Editor
ISBNData
StatusSelectDeux options : Issued et Available (tapez Issued, appuyez sur Entrée, puis tapez Available)
PublisherData

La documentation officielle illustre cette étape par une animation.

Une fois les champs ajoutés, cliquez sur Save.

Un bouton Go to Article List apparaît en haut à droite du formulaire. Cliquez dessus pour ouvrir la liste des articles. Elle est vide, car la table ne contient encore aucun enregistrement.

Créons quelques enregistrements. Il faut d’abord vider le cache du bureau : ouvrez le menu déroulant Settings à droite de la barre de navigation et cliquez sur Reload.

Le bouton New s’affiche maintenant. Cliquez dessus pour ouvrir la vue formulaire (Form) du DocType Article. Remplissez le formulaire et cliquez sur Save : vous venez de créer votre premier document Article. Revenez à la vue liste, vous devez y voir un enregistrement.

Que s’est-il passé à la création du DocType Article ?

1. Table de base de données

Une table nommée tabArticle a été créée avec les champs indiqués dans la table Fields. Vous pouvez le vérifier depuis la console MariaDB :

terminal
bench --site library.localhost mariadb
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 2445938
Server version: 10.4.13-MariaDB Homebrew

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [_ad03fa1a016ca1c4]> desc tabArticle;
+--------------+--------------+------+-----+-----------+-------+
| Field        | Type         | Null | Key | Default   | Extra |
+--------------+--------------+------+-----+-----------+-------+
| name         | varchar(140) | NO   | PRI | NULL      |       |
| creation     | datetime(6)  | YES  |     | NULL      |       |
| modified     | datetime(6)  | YES  | MUL | NULL      |       |
| modified_by  | varchar(140) | YES  |     | NULL      |       |
| owner        | varchar(140) | YES  |     | NULL      |       |
| docstatus    | int(1)       | NO   |     | 0         |       |
| parent       | varchar(140) | YES  | MUL | NULL      |       |
| parentfield  | varchar(140) | YES  |     | NULL      |       |
| parenttype   | varchar(140) | YES  |     | NULL      |       |
| idx          | int(8)       | NO   |     | 0         |       |
| article_name | varchar(140) | YES  |     | NULL      |       |
| image        | text         | YES  |     | NULL      |       |
| author       | varchar(140) | YES  |     | NULL      |       |
| description  | longtext     | YES  |     | NULL      |       |
| isbn         | varchar(140) | YES  |     | NULL      |       |
| status       | varchar(140) | YES  |     | Available |       |
| publisher    | varchar(140) | YES  |     | NULL      |       |
| _user_tags   | text         | YES  |     | NULL      |       |
| _comments    | text         | YES  |     | NULL      |       |
| _assign      | text         | YES  |     | NULL      |       |
| _liked_by    | text         | YES  |     | NULL      |       |
+--------------+--------------+------+-----+-----------+-------+
21 rows in set (0.002 sec)

MariaDB [_ad03fa1a016ca1c4]>

Les libellés saisis en casse de titre (Title Case) ont été convertis automatiquement en snake_case et servent de noms de colonnes : par exemple article_name, image, author et description.

D’autres colonnes ont aussi été créées, comme name, creation, modified et modified_by. Ce sont des champs standard, présents dans tous les DocTypes. name est la clé primaire.

Si vous avez créé un enregistrement via le formulaire, une requête select classique permet de le retrouver :

sql
MariaDB [_ad03fa1a016ca1c4]> select * from tabArticle;
+------------+----------------------------+----------------------------+---------------+---------------+-----------+--------+-------------+------------+-----+-----------------------------+--
| name       | creation                   | modified                   | modified_by   | owner         | docstatus | parent | parentfield | parenttype | idx | article_name                | i
+------------+----------------------------+----------------------------+---------------+---------------+-----------+--------+-------------+------------+-----+-----------------------------+--
| bd514646b9 | 2020-10-10 16:24:43.033457 | 2020-10-10 16:24:43.033457 | Administrator | Administrator |         0 | NULL   | NULL        | NULL       |   0 | The Girl with all the Gifts | N
+------------+----------------------------+----------------------------+---------------+---------------+-----------+--------+-------------+------------+-----+-----------------------------+--

MariaDB [_ad03fa1a016ca1c4]>

2. Vues du bureau

Plusieurs vues ont été créées pour le DocType. La liste des articles (Article List) est la vue liste qui affiche les enregistrements de la table. La vue formulaire (Form) s’affiche pour créer un nouveau document ou consulter un document existant.

3. Mise en page du formulaire

Les champs sont disposés dans le formulaire dans l’ordre défini dans la table Fields : Article Name en premier, puis Image, puis Author. Les étapes suivantes du tutoriel montrent comment personnaliser davantage cette mise en page.

4. Code de base généré

> [!NOTE] > Vérifiez que la case Custom? est décochée dans la configuration du DocType. Sinon, les fichiers décrits ci-dessous ne sont pas générés. Une explication est donnée sur le forum.

Si vous regardez les changements dans votre app, vous constaterez que plusieurs fichiers ont été créés. Depuis le dossier frappe-bench, lancez :

terminal
$ cd apps/library_management
$ git status -u
On branch master
Untracked files:
  (use "git add <file>..." to include in what will be committed)
    library_management/library_management/doctype/__init__.py
    library_management/library_management/doctype/article/__init__.py
    library_management/library_management/doctype/article/article.js
    library_management/library_management/doctype/article/article.json
    library_management/library_management/doctype/article/article.py
    library_management/library_management/doctype/article/test_article.py

nothing added to commit but untracked files present (use "git add" to track)
FichierRôle
article.jsonFichier JSON qui définit les attributs du DocType
article.jsContrôleur côté client pour la vue formulaire
article.pyContrôleur Python du DocType Article
test_article.pySquelette de test unitaire Python

Un DocType décrit donc beaucoup de choses sur le modèle : non seulement la table et les noms de colonnes, mais aussi la façon dont il s’affiche dans les différentes vues du bureau.

Bravo d’avoir suivi le tutoriel jusqu’ici. Continuons !

Étape suivante : Fonctionnalités d’un DocType.

Pages liées

Tutoriel Frappe : créer un DocType pas à pas | ERPNext Lab