Customizing how data is created

There are many ways to customize how to insert rows into the database.

class lino.core.model.Model

Override this to set default values that depend on the request.

The difference with Django's pre_init and post_init signals is that (1) you override the method instead of binding a signal and (2) you get the action request as argument.

Used e.g. by lino_xl.lib.notes.Note.

after_ui_create(self, ar)

Hook to define custom behaviour to run when a user has created a new instance of this model.


The SubmitInsert action to be executed when the when the users submits an insert window.

See lino.mixins.dupable for an example of how to override it.

create_from_choice(cls, text)

Called when a learning combo has been submitted. Create a persistent database object if the given text contains enough information.

choice_text_to_dict(cls, text)

Return a dict of the fields to fill when the given text contains enough information for creating a new database object.

class lino.core.actors.Actor
allow_create = True

If this is False, the table won't have any insert_action.

get_create_permission(self, ar)

Dynamic test per request.

This is being called only when allow_create is True.