# Automates DRF APIs for Ant Design ProTable
> `drf_antd_protable` automates DRF APIs for Ant Design ProTable, enabling seamless data handling with pagination, sorting, filtering, and searching support, while automatically generating frontend table configurations.
## Installation
```bash
python3 -m pip install -U drf-antd-protable
```
## Usage
#### 1. use as `viewsets`
```python
# views.py
from drf_antd_protable.viewsets import ProTableViewSet
from . import models, serializers
class MyTableViewSet(ProTableViewSet):
queryset = models.QA.objects.all()
serializer_class = serializers.QA_Serializer
```
```python
# urls.py
from rest_framework.routers import DefaultRouter
from .views import MyTableViewSet
router = DefaultRouter()
router.register('demo_table', MyTableViewSet, basename='demo_table')
urlpatterns = [
# ...
path('', include(router.urls)),
# ...
]
```
#### 2. supporting columns configuration
- `hidden_fields`
- `select_fields`
- `sorter_fields`
- `copyable_fields`
- `not_search_fields`
- `render_region_fields`
- `render_compare_fields`
- `verbose_name_map`
example
```python
class MyTableViewSet(ProTableViewSet):
queryset = models.QA.objects.all()
serializer_class = serializers.QA_Serializer
hidden_fields = ['id']
select_fields = ['department']
sorter_fields = ['user', 'question']
copyable_fields = ['anwser']
not_search_fields = ['department']
render_region_fields = ['size']
render_compare_fields = ['count']
verbose_name_map = {
'size': '大小',
'count': '数量',
}
```
## Endpoints
- `demo_table/columns/`

- `demo_table/data/`

- `demo_table/export/`

## Use in Frontend
```jsx
import { ProTable } from '@ant-design/pro-components'
import { useRequest } from 'ahooks'
import { request } from '@umijs/max'
const DemoTable = () => {
const columnsRequest = useRequest(async () => request('/api/demo_table/columns/'))
return (
<ProTable
columns={columnsRequest.data}
request={async (params, sorter, filter) => {
const { current, pageSize, keyword, ...search } = params;
const payload = {
sort: sorter,
filter: filter,
search: search,
globalSearch: keyword,
};
const data = await request('/api/demo_table/data/', {
method: 'POST',
data: payload,
params: { current, pageSize },
})
return data
}}
/>
)
}
```
Raw data
{
"_id": null,
"home_page": "https://github.com/suqingdong/drf_antd_protable",
"name": "drf-antd-protable",
"maintainer": null,
"docs_url": null,
"requires_python": null,
"maintainer_email": null,
"keywords": null,
"author": "suqingdong",
"author_email": "suqingdong1114@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/7a/d1/348f7229ee508bf6c374979ede9f2fae58f7dc53760786ea746616515b9c/drf_antd_protable-1.0.1.tar.gz",
"platform": null,
"description": "# Automates DRF APIs for Ant Design ProTable\n\n> `drf_antd_protable` automates DRF APIs for Ant Design ProTable, enabling seamless data handling with pagination, sorting, filtering, and searching support, while automatically generating frontend table configurations.\n\n## Installation\n```bash\npython3 -m pip install -U drf-antd-protable\n```\n\n## Usage\n\n#### 1. use as `viewsets`\n\n```python\n# views.py\nfrom drf_antd_protable.viewsets import ProTableViewSet\nfrom . import models, serializers\n\nclass MyTableViewSet(ProTableViewSet):\n queryset = models.QA.objects.all()\n serializer_class = serializers.QA_Serializer\n```\n\n```python\n# urls.py\nfrom rest_framework.routers import DefaultRouter\nfrom .views import MyTableViewSet\n\nrouter = DefaultRouter()\nrouter.register('demo_table', MyTableViewSet, basename='demo_table')\n\nurlpatterns = [\n # ...\n path('', include(router.urls)),\n # ...\n]\n```\n\n#### 2. supporting columns configuration\n- `hidden_fields`\n- `select_fields`\n- `sorter_fields`\n- `copyable_fields`\n- `not_search_fields`\n- `render_region_fields`\n- `render_compare_fields`\n- `verbose_name_map`\n\nexample\n\n```python\nclass MyTableViewSet(ProTableViewSet):\n queryset = models.QA.objects.all()\n serializer_class = serializers.QA_Serializer\n\n hidden_fields = ['id']\n select_fields = ['department']\n sorter_fields = ['user', 'question']\n copyable_fields = ['anwser']\n not_search_fields = ['department']\n render_region_fields = ['size']\n render_compare_fields = ['count']\n verbose_name_map = {\n 'size': '\u5927\u5c0f',\n 'count': '\u6570\u91cf',\n }\n```\n\n## Endpoints\n\n- `demo_table/columns/`\n\n\n- `demo_table/data/`\n\n\n- `demo_table/export/`\n\n\n\n## Use in Frontend\n```jsx\nimport { ProTable } from '@ant-design/pro-components'\nimport { useRequest } from 'ahooks'\nimport { request } from '@umijs/max'\n\nconst DemoTable = () => {\n const columnsRequest = useRequest(async () => request('/api/demo_table/columns/'))\n\n return (\n <ProTable\n columns={columnsRequest.data}\n request={async (params, sorter, filter) => {\n const { current, pageSize, keyword, ...search } = params;\n const payload = {\n sort: sorter,\n filter: filter,\n search: search,\n globalSearch: keyword,\n };\n const data = await request('/api/demo_table/data/', {\n method: 'POST',\n data: payload,\n params: { current, pageSize },\n })\n return data\n }}\n />\n )\n}\n```\n\n",
"bugtrack_url": null,
"license": "MIT License",
"summary": "Automates DRF APIs for Ant Design ProTable",
"version": "1.0.1",
"project_urls": {
"Homepage": "https://github.com/suqingdong/drf_antd_protable"
},
"split_keywords": [],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "c5615b2f413fc0cc22354ba7bf047f906ce57b0df9c3bdd4e0f3e1ab5921579d",
"md5": "aa2d5c3c719ad091b52ecfa7b389556e",
"sha256": "8dca1baa6a91fa5e6b70cec48ccd18b07e3dcb0d740de495f03d57f55e1c4611"
},
"downloads": -1,
"filename": "drf_antd_protable-1.0.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "aa2d5c3c719ad091b52ecfa7b389556e",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 8840,
"upload_time": "2024-04-18T05:38:43",
"upload_time_iso_8601": "2024-04-18T05:38:43.984386Z",
"url": "https://files.pythonhosted.org/packages/c5/61/5b2f413fc0cc22354ba7bf047f906ce57b0df9c3bdd4e0f3e1ab5921579d/drf_antd_protable-1.0.1-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "7ad1348f7229ee508bf6c374979ede9f2fae58f7dc53760786ea746616515b9c",
"md5": "c70713133d32afc7d53eda1555ebcc91",
"sha256": "23bf4029e8f7d720f415ac6217a4e572eec7a3e239d354af3e1c2e68e1cbf09b"
},
"downloads": -1,
"filename": "drf_antd_protable-1.0.1.tar.gz",
"has_sig": false,
"md5_digest": "c70713133d32afc7d53eda1555ebcc91",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 8639,
"upload_time": "2024-04-18T05:38:46",
"upload_time_iso_8601": "2024-04-18T05:38:46.014615Z",
"url": "https://files.pythonhosted.org/packages/7a/d1/348f7229ee508bf6c374979ede9f2fae58f7dc53760786ea746616515b9c/drf_antd_protable-1.0.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-04-18 05:38:46",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "suqingdong",
"github_project": "drf_antd_protable",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"requirements": [],
"lcname": "drf-antd-protable"
}