drf-antd-protable


Namedrf-antd-protable JSON
Version 1.0.1 PyPI version JSON
download
home_pagehttps://github.com/suqingdong/drf_antd_protable
SummaryAutomates DRF APIs for Ant Design ProTable
upload_time2024-04-18 05:38:46
maintainerNone
docs_urlNone
authorsuqingdong
requires_pythonNone
licenseMIT License
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # 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/`
![](https://suqingdong.github.io/drf_antd_protable/src/columns.png)

- `demo_table/data/`
![](https://suqingdong.github.io/drf_antd_protable/src/data.png)

- `demo_table/export/`
![](https://suqingdong.github.io/drf_antd_protable/src/export.png)


## 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![](https://suqingdong.github.io/drf_antd_protable/src/columns.png)\n\n- `demo_table/data/`\n![](https://suqingdong.github.io/drf_antd_protable/src/data.png)\n\n- `demo_table/export/`\n![](https://suqingdong.github.io/drf_antd_protable/src/export.png)\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"
}
        
Elapsed time: 0.27666s