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.4.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 91803f19ccfa53268b85f0e272b6d7d54d23eef9ece28b44f61587087a14b834 |
|
MD5 | be1e02da4ae11704f857d3e6622dbf4a |
|
BLAKE2b-256 | de74016195f44f5936ecaf8857a1bc840bc4064952899afeb1e4d375d5d9845b |
Hashes for mongoengine_datatables-0.0.4-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 29697c54d56aef1454807714b44c00f3a6b8c8cddc51a98cd8f4f0021bad73e6 |
|
MD5 | 52e8f740974d246156bf8fbca9de2914 |
|
BLAKE2b-256 | 144b31980872a7e7e8f1b5a86cd4e792e2d3c3a6fb1fb8dfee5162a2993c7b3f |