After creating the Roles, let us create the DocTypes.
To create a new DocType, go to:
Developer > Documents > Doctype > New
In the DocType, first add the Name of the DocType as Article. Then pick the Module, which in our case is Library Management
In the Fields Table, you can add the fields (properties) of the DocType (Article).
Fields are much more than database columns, they can be:
- Columns in the database
- Layout helpers (section / column breaks)
- Child tables (Table type field)
- Actions (button)
- Attachments or Images
Let us add the fields of the Article.
When you add the fields, you need to enter the Type. Label is optional for Section Break and Column Break. Name (
fieldname) is the name of the database table column and also the property of the controller. This has to be code friendly, i.e. use lowercase and underscores "_" instead of spaces " ". If you leave the field Name blank, it will be automatically set based on the Label when you save it.
You can also set other properties of the field like whether it is mandatory, read only etc.
We can add the following fields:
- Article Name (Data)
- Author (Data)
- Description (Text)
- ISBN (Data)
- Status (Select): For Select fields, you will enter the Options. Enter Issued and Available each on a new line in the Options box.
- Publisher (Data)
- Language (Data)
- Image (Attach Image)
After adding the fields, scroll down to 'Permission Rules' section and add a new row. For now, let us give Read, Write, Create, Delete and Report access to Librarian. Frappe has a finely grained Role based permission model. You can also change permissions later using the Role Permissions Manager from Permissions in Users and Permissions.
Click on the Save button.
Now login into mysql and check the database table created:
$ bench mariadb
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 3931
Server version: 5.5.36-MariaDB-log Homebrew
Copyright (c) 2000, 2014, Oracle, Monty Program Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [library]> DESC tabArticle;
| Field | Type | Null | Key | Default | Extra |
| name | varchar(255) | NO | PRI | NULL | |
| creation | datetime(6) | YES | | NULL | |
| modified | datetime(6) | YES | | NULL | |
| modified_by | varchar(40) | YES | | NULL | |
| owner | varchar(60) | YES | | NULL | |
| docstatus | int(1) | YES | | 0 | |
| parent | varchar(255) | YES | MUL | NULL | |
| parentfield | varchar(255) | YES | | NULL | |
| parenttype | varchar(255) | YES | | NULL | |
| idx | int(8) | YES | | NULL | |
| article_name | varchar(255) | YES | | NULL | |
| status | varchar(255) | YES | | NULL | |
| description | text | YES | | NULL | |
| image | varchar(255) | YES | | NULL | |
| publisher | varchar(255) | YES | | NULL | |
| isbn | varchar(255) | YES | | NULL | |
| language | varchar(255) | YES | | NULL | |
| author | varchar(255) | YES | | NULL | |
18 rows in set (0.00 sec)
As you can see, along with the DocFields, several standard columns have also been added to the table. Important to note here are, the primary key,
owner(the user who has created the record),
modified (timestamps for creation and last modification).
Next: Naming And Linking