Filtering JsonField DateTimeField

Hello I created a dynamic table in django with the help of JsonField, but my problem now is, how can i sort the data in each list based on their created_date field(at the top of updated_by field)?

[ 
    {
        "id": 1,
        "last_updated": "03/31/2021 - 11:38",
        "task_code": "TASK_PROD-2021-001",
        "name": "AR",
        "type": "Prod",
        "description": "AR",
        "fields": [
            {
                "header": "Task Name",
                "accessor": "name"
            },
            {
                "header": "Project Name",
                "accessor": "project_name"
            },
            {
                "header": "Reference Code",
                "accessor": "reference_code"
            },
            {
                "header": "Status",
                "accessor": "status"
            },
            {
                "header": "Created Date",
                "accessor": "created_date"
            },
            {
                "header": "Start Date",
                "accessor": "start_date"
            },
            {
                "header": "End Date",
                "accessor": "end_date"
            },
            {
                "header": "Time Spent",
                "accessor": "time_spent"
            }
        ],
        "field_value": [
            {
                "id": "Woir_eeuTfiWcDvVPxf3Hg",
                "name": "Task 1",
                "reference_code": "FIN123",
                "status": "Completed",
                "start_date": "Mar 31, 2021 05:48:41 PM",
                "end_date": "Mar 31, 2021 05:49:21 PM",
                "time_spent": "00 : 00 : 40",
                "project_name": "Project 1",
                "created_date": "April 30, 2021 - Friday",
                "is_assigned": true,
                "is_priority": false,
                "Param": null
            },
            {
                "id": "_4JgN5BURTOvX3yIy8faAA",
                "name": "Task 1",
                "reference_code": "FIN123",
                "status": "Pending",
                "start_date": null,
                "end_date": null,
                "time_spent": null,
                "project_name": "Project 1",
                "created_date": "April 30, 2021 - Friday",
                "is_assigned": false,
                "is_priority": false,
                "Param": null
            }
        ],
        "audit_parameter": [
            {
                "name": "Param",
                "weight": "100"
            }
        ],
        "created_date": "2021-03-31T18:28:00.326742+08:00",
        "updated_by": "Workforce",
        "billing_type": 1,
        "project": 1
    },
    {
        "id": 2,
        "last_updated": "03/31/2021 - 16:25",
        "task_code": "TASK_PROD-2021-002",
        "name": "CSR",
        "type": "Prod",
        "description": "CSR",
        "fields": [
            {
                "header": "Task Name",
                "accessor": "name"
            },
            {
                "header": "Project Name",
                "accessor": "project_name"
            },
            {
                "header": "Reference Code",
                "accessor": "reference_code"
            },
            {
                "header": "Status",
                "accessor": "status"
            },
            {
                "header": "Created Date",
                "accessor": "created_date"
            },
            {
                "header": "Start Date",
                "accessor": "start_date"
            },
            {
                "header": "End Date",
                "accessor": "end_date"
            },
            {
                "header": "Time Spent",
                "accessor": "time_spent"
            }
        ],
        "field_value": [
            {
                "id": "CVA8Mp6CQamvn-kEibnONA",
                "name": "Task 1",
                "reference_code": "FIN123",
                "status": "Pending",
                "start_date": null,
                "end_date": null,
                "time_spent": null,
                "project_name": "Project 1",
                "created_date": "April 30, 2021 - Friday",
                "is_assigned": false,
                "is_priority": false,
                "Param ": null
            },
            {
                "id": "zw9P2wxgSQSIZUU75jP4GA",
                "name": "Task 1",
                "reference_code": "FIN123",
                "status": "Pending",
                "start_date": null,
                "end_date": null,
                "time_spent": null,
                "project_name": "Project 1",
                "created_date": "April 30, 2021 - Friday",
                "is_assigned": false,
                "is_priority": false,
                "Param ": null
            }
        ],
        "audit_parameter": [
            {
                "name": "Param ",
                "weight": "100"
            }
        ],
        "created_date": "2021-03-31T18:28:00.326742+08:00",
        "updated_by": "Workforce",
        "billing_type": 1,
        "project": 1
    },

Hi!

You can query a Json Field based on their keys. In this case something like:

Model.objects.all().order_by("data__updated_by") # Assuming data is the JsonField name

https://docs.djangoproject.com/en/3.1/topics/db/queries/#key-index-and-path-transforms

1 Like

Thank you! will try this one.