Возможно ли использовать 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

У вас есть несколько вариантов.

  1. Загрузите данные в модель, которая соответствует json, если она последовательна для каждой записи.
  2. Загрузить данные в поле JSON в модели django.
  3. Просто используйте 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-штуки.

Вернуться на верх