import
Project description
mongoengine_datatables
A script for using the jQuery plug-in DataTables server-side processing with MongoEngine.
Works with Flask and Django. Supports column sorting and filtering by multiple search terms. Supports ReferenceFields & EmbeddedDocumentField for search.
Install
You can install with pip:
pip install mongoengine_datatables
Minimal example
Copy paste this code to app.py
from flask import Flask, render_template_string, jsonify, request
from flask_mongoengine import MongoEngine
from mongoengine_datatables import DataTables
app = Flask(__name__)
db = MongoEngine(app)
class Hello(db.Document):
field_one = db.StringField()
field_two = db.StringField()
@app.route('/api/', methods=['POST'])
def api():
args = request.get_json()
res = DataTables(Hello, args).get_rows()
return jsonify(res)
@app.route('/')
def hello_world():
if not Hello.objects(field_one='Hello').first():
Hello(field_one='Hello', field_two='World').save()
return render_template_string(
'''
<html> <head>
<link rel="stylesheet" type="text/css"
href="https://cdn.datatables.net/v/bs4-4.1.1/jq-3.3.1/jszip-2.5.0/dt-1.10.20/b-1.6.1/b-html5-1.6.1/r-2.2.3/sc-2.0.1/sl-1.3.1/datatables.min.css"/>
</head>
<body class="p-3">
<table id="dt_table" class="table table-striped" style="width:100%">
<thead>
<tr>
<th>one</th>
<th>two</th>
</tr>
</thead>
</table>
</body>
<script type="text/javascript"
src="https://cdn.datatables.net/v/bs4-4.1.1/jq-3.3.1/jszip-2.5.0/dt-1.10.20/b-1.6.1/b-html5-1.6.1/r-2.2.3/sc-2.0.1/sl-1.3.1/datatables.min.js"></script>
<script>
$(function () {
$('#dt_table').DataTable({
serverSide: true,
ajax: {
url: '{{ url_for('api') }}',
dataSrc: 'data',
type: 'POST',
contentType: 'application/json',
data: function (d) {
return JSON.stringify(d)
}
},
columns: [
{data: 'field_one'},
{data: 'field_two'},
]
});
});
</script> </html>
'''
)
if __name__ == "__main__":
app.run(debug=True, host='0.0.0.0')
Install modules & run:
python app.py
Results:
Advanced usage:
embed_search - For specific search in EmbeddedDocumentField q_obj - Additional search results in reference collection custom_filter - Your custom filter
DataTables(your_model, request_args, embed_search={}, q_obj=[], custom_filter={})
For datetime field
DataTables return datetime as epoch time with milliseconds. Example:
{'my_date': {'$date': 1605116909954}}
You can convert it:
import time
time.strftime('%Y-%m-%d %H:%M:%S', time.gmtime(1605116909954/1000.0))
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for mongoengine_datatables-0.0.3.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2113196df31784b995132b9f896a94bfe3384fd88862582fcfb5bc816b001f04 |
|
MD5 | 11628a6d09d861dd8cb79ba9bb4a8cce |
|
BLAKE2b-256 | 28c3ef80f6b802664abd9ad0bc15a8511ac2ccd9327ca3efc87cbe4e360c69f5 |
Hashes for mongoengine_datatables-0.0.3-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7c83481dcf903bf934932351681515f115c46890d20d2b1bd673d7f5c5f3a39b |
|
MD5 | 320ad7767fea6bd5f1c1d92cd749063a |
|
BLAKE2b-256 | bbe15d8c1a26cd7a3855cef0bf4cb02ce34eb1e7cb86535ee95b682756924f35 |