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 mongoengine datatables
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.8.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | e0a443cb72d7e3c006dbe7bdbf4de97033b2b18bd11109d0ff287de9e91929b0 |
|
MD5 | 06d80d50b9e2532a4d8796608bae5dfe |
|
BLAKE2b-256 | 92fae2d202023d36d447df31e19efaf8d555888132e9788c0d9ff18575668df3 |
Hashes for mongoengine_datatables-0.0.8-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5cb5d798c2f8cd19ba88904750ce823b01bd41e7fb02daecdc6ff96dccf9e7eb |
|
MD5 | bff7f6f251347d52d8e74055761cfa7c |
|
BLAKE2b-256 | c7702ad8d0a00f20eb5f9efc1a5143c56986a7e0b49599034d06297db41477e3 |