to select ↑↓ to navigate
Framework

Framework

Open in ChatGPT
Ask ChatGPT about this page
Open in Claude
Ask Claude about this page

Server Calls (AJAX)

frappe.call

frappe.call(method, args)

Makes an AJAX request to the server, where the method which is the dotted path
to a whitelisted Python method, is executed and it's return value is sent as the
response.

// call with no parameters
frappe.call('ping')
 .then(r => {
 console.log(r)
 // {message: "pong"}
 })

// call with a single parameter
frappe.call('frappe.core.doctype.user.user.get_role_profile', {
 role_profile: 'Test'
}).then(r => {
 console.log(r.message)
})

// call with all options
frappe.call({
 method: 'frappe.core.doctype.user.user.get_role_profile',
 args: {
 role_profile: 'Test'
 },
 // disable the button until the request is completed
 btn: $('.primary-action'),
 // freeze the screen until the request is completed
 freeze: true,
 callback: (r) => {
 // on success
 },
 error: (r) => {
 // on error
 }
})

frappe.db.get_doc

frappe.db.get_doc(doctype, name, filters)

Returns the Document object of doctype and name. If name is not provided,
gets the first document matched by filters.

// get doc by name
frappe.db.get_doc('Task', 'TASK00002')
 .then(doc => {
 console.log(doc)
 })

// get doc by filters
frappe.db.get_doc('Task', null, { status: 'Open' })
 .then(doc => {
 console.log(doc)
 })

frappe.db.get_list

frappe.db.get_list(doctype, { fields, filters })

Returns a list of records of doctype with fields and filters.

frappe.db.get_list('Task', {
 fields: ['subject', 'description'],
 filters: {
 status: 'Open'
 }
}).then(records => {
 console.log(records);
})

frappe.db.get_value

frappe.db.get_value(doctype, name, fieldname)

Returns a document's field value or a list of values.

// single value
frappe.db.get_value('Task', 'TASK00004', 'status')
 .then(r => {
 console.log(r.message.status) // Open
 })

// multiple values
frappe.db.get_value('Task', 'TASK00004', ['status', 'subject'])
 .then(r => {
 let values = r.message;
 console.log(values.status, values.subject)
 })

// using filters
frappe.db.get_value('Task', {status: 'Open'}, 'subject')
 .then(r => {
 let values = r.message;
 console.log(values.subject)
 })

frappe.db.get_single_value

frappe.db.get_single_value(doctype, field)

Returns a field value from a Single DocType.

frappe.db.get_single_value('System Settings', 'time_zone')
 .then(time_zone => {
 console.log(time_zone);
 })

frappe.db.set_value

frappe.db.set_value(doctype, docname, fieldname, value, callback)

Sets a document's property using frappe.get_doc and doc.save on server.

// update a field's value
frappe.db.set_value('Task', 'TASK00004', 'status', 'Open')
 .then(r => {
 let doc = r.message;
 console.log(doc);
 })

// update multiple fields
frappe.db.set_value('Task', 'TASK00004', {
 status: 'Working',
 priority: 'Medium'
}).then(r => {
 let doc = r.message;
 console.log(doc);
})

frappe.db.insert

frappe.db.insert(doc)

Insert a new document.

frappe.db.insert({
 doctype: 'Task',
 subject: 'New Task'
}).then(doc => {
 console.log(doc);
})

frappe.db.count

frappe.db.count(doctype, filters)

Returns number of records for a given doctype and filters.

// total number of Task records
frappe.db.count('Task')
 .then(count => {
 console.log(count)
 })

// total number of Open Tasks
frappe.db.count('Task', {
 filters: {
 status: 'Open'
 }
}).then(count => {
 console.log(count);
})

frappe.db.delete_doc

frappe.db.delete_doc(doctype, name)

Delete a document identified by doctype and name.

frappe.db.delete_doc('Task', 'TASK00004')

frappe.db.exists

frappe.db.exists(doctype, name)

Returns true if a document record exists.

frappe.db.exists('Task', 'TASK00004')
 .then(exists => {
 console.log(exists) // true
 })
Last updated 1 month ago
Was this helpful?
Thanks!