Возможно ли использовать Django ORM с объектом JSON?
У меня есть два json-объекта, с которыми мне нужно выполнить различные операции ORM, такие как count
, filter
, all
Вот комментарии первого объекта:
в файле views.py
comments_response = requests.get('https://jsonplaceholder.typicode.com/comments')
comments_data = json.loads(comments_response.text)
Ниже показано, как выглядит print(comments_data)
:
[
{
"userId": 1,
"id": 1,
"title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit",
"body": "quia et suscipit\nsuscipit recusandae consequuntur expedita et cum\nreprehenderit molestiae ut ut quas totam\nnostrum rerum est autem sunt rem eveniet architecto"
},
{
"userId": 1,
"id": 2,
"title": "qui est esse",
"body": "est rerum tempore vitae\nsequi sint nihil reprehenderit dolor beatae ea dolores neque\nfugiat blanditiis voluptate porro vel nihil molestiae ut reiciendis\nqui aperiam non debitis possimus qui neque nisi nulla"
},
]
Это второй объект json: in views.py
posts_response = requests.get(
'https://jsonplaceholder.typicode.com/posts')
posts_data = json.loads(posts_response.text)
Ниже показано, как выглядит print(posts_data)
:
[
{
"postId": 1,
"id": 1,
"name": "id labore ex et quam laborum",
"email": "Eliseo@gardner.biz",
"body": "laudantium enim quasi est quidem magnam voluptate ipsam eos\ntempora quo necessitatibus\ndolor quam autem quasi\nreiciendis et nam sapiente accusantium"
},
{
"postId": 1,
"id": 2,
"name": "quo vero reiciendis velit similique earum",
"email": "Jayne_Kuhic@sydney.com",
"body": "est natus enim nihil est dolore omnis voluptatem numquam\net omnis occaecati quod ullam at\nvoluptatem error expedita pariatur\nnihil sint nostrum voluptatem reiciendis et"
},
]
Возможно ли использовать django ORM для работы с json объектами? Например, comments_data.objects.count('title')
или comments_posts.objects.all()
. Может ли сериализатор из DRF помочь в такого рода операциях? Нужно ли мне использовать какие-либо другие фреймворки для преобразования json в ORM-объекты?
Примечание: Я поискал соответствующие темы/вопросы, но большинство из них имеют JSON данные из их собственной внутренней базы данных, к которой у них есть полный доступ (то есть они уже могут делать ORM с самого начала). В моем случае, я просто получил json объекты из внешнего API и они не из моей внутренней базы данных или любой другой базы данных, к которой у меня есть доступ
Некоторые вопросы, которые я видел, но не отвечающие на мой вопрос:
1.https://stackoverflow.com/questions/66223066/django-getting-values-from-postgres-json-field
2.https://stackoverflow.com/questions/10445176/how-to-write-a-query-to-get-find-value-in-a-json-field-in-django
3.https://stackoverflow.com/questions/36389871/django-jsonfield-filtering
У вас есть несколько вариантов.
- Загрузите данные в модель, которая соответствует json, если она последовательна для каждой записи.
- Загрузить данные в поле JSON в модели django.
- Просто используйте comprehension для фильтрации ваших dicts.
Для (3), после загрузки JSON в список python dicts вы можете манипулировать им.
Со:
- Подсчитайте записи:
len(comments_data)
- Все записи:
comments_data
- Отфильтровать записи:
[item for item in comments_data if item["email"] == "Eliseo@gardner.biz"]
etc.
В принципе, нет необходимости пытаться повторить здесь ORM-штуки.