This package provides easy integration between Django REST framework and DevExtreme Data Grid. It handles grouping, paging, filtering, aggregating and ordering on serverside.
Project description
htec-drf-dx-datagrid
Overview
This package provides easy integration between Django REST framework and DevExtreme Data Grid. It handles grouping, paging, filtering, aggregating and ordering on serverside.
In which case should you use htec-drf-dx-datagrid?
You have DevExtreme in the frontend and Django REST framework as the backend. And your data is too large to load at once, but you want use grouping and filtering.
How it works?
Htec-drf-dx-datagrid supports devextreme load options in HTTP-request and returns data in format fully compatible with Data Grid. All you need is to replace classname "ModelViewSet" with "DxModelViewSet" in your django project
Installation
pip install htec-drf-dx-datagrid
Configuration
Define your ModelViewSet class inherits from DxModelViewSet:
from htec_drf_dx_datagrid import DxModelViewSet
class MyModelViewSet(DxModelViewSet):
serializer_class = MyModelSerializer
queryset = MyModel.objects.all()
Also you can define ReadOnlyModelViewSet inherits from DxReadOnlyModelViewSet
from htec_drf_dx_datagrid import DxModelViewSet
class MyReadOnlyModelViewSet(DxReadOnlyModelViewSet):
serializer_class = MyModelSerializer
queryset = MyModel.objects.all()
Example for React.js:
const load = (loadOptions) => {
return axios(`${my_url}`, {
params: loadOptions
}
).then((response) => response.data
)
}
export default class Example extends PureComponent {
state={
store: new CustomStore({ load: load})
}
render() {
return (<DataGrid
dataSource={this.state.store}
height={"100vh"}
>
<RemoteOperations groupPaging={true}/>
<Scrolling mode={'virtual'}/>
<HeaderFilter visible={true} allowSearch={true}/>
<Paging defaultPageSize={40}/>
<Sorting mode={"multiple"}/>
<FilterRow visible={true}/>
<GroupPanel visible={true}/>
<Grouping autoExpandAll={false}/>
<Summary>
<TotalItem column={"id"} summaryType={"count"}/>
<GroupItem column={"name"} summaryType={"max"}/>
</Summary>
</DataGrid>
);
}
}
Example for jQuery.js:
const load = (loadOptions) => {
return axios(`${my_url}`, {
params: loadOptions
}
).then((response) => response.data
)
}
const store = new DevExpress.data.CustomStore({load: load});
$("#gridContainer").dxDataGrid({
dataSource: store,
height: "100vh",
remoteOperations: {
groupPaging: true
},
scrolling: {mode: 'virtual'},
headerFilter: {visible: true, allowSearch: true},
paging: {defaultPageSize: 40},
sorting: {mode: "multiple"},
filterRow: {visible: true},
groupPanel: {visible: true},
grouping: {autoExpandAll: false},
summary: {
totalItems: [{
column: "id",
summaryType: "count"
}],
groupItems: [{
column: "id",
summaryType: "min"
}]
}
});
By default, filtering is case-sensitive.If you want case-insensitive behavior, you must set FILTER_CASE_SENSITIVE parameter to false in django settings:
REST_FRAMEWORK = {
'DRF_DX_DATAGRID': {
'FILTER_CASE_SENSITIVE': False}
}
Project details
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
File details
Details for the file htec_drf_dx_datagrid-0.4.4.tar.gz
.
File metadata
- Download URL: htec_drf_dx_datagrid-0.4.4.tar.gz
- Upload date:
- Size: 9.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.0 CPython/3.11.8
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 691ac2bc20043717ca9add46becc0ece04e454740eaa007aa19ca88795a104ae |
|
MD5 | dfa4f848c661b0508b7c18f02501047d |
|
BLAKE2b-256 | 2d9c267628082ce534d4740c40dcc85c2664721a7c0f0d1365b8793326ee9836 |
File details
Details for the file htec_drf_dx_datagrid-0.4.4-py3-none-any.whl
.
File metadata
- Download URL: htec_drf_dx_datagrid-0.4.4-py3-none-any.whl
- Upload date:
- Size: 9.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.0 CPython/3.11.8
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | d1f51de4f89a268dcf22fa25647c816cbbf55a79f16f6abe34e5008aa49da402 |
|
MD5 | d2a5f76d77d01ca92271ca3889c8b3b9 |
|
BLAKE2b-256 | 4144acc0cbb8660a0fdd651875cc3d6fd54e8d010729ccc0573aea9617fde7d9 |