Задать вопрос
@Enter_a_nickname

Как правильно прописать json структуру в models.py проекта django с помощью JSONField?

БД моего проекта - MongoDB, для соединения mongo и проекта django (использую версию 4.0.1) я использую движок "djОngo". Соединение с базой работает корректно.
Я хочу хранить в MongoDB данные, получаемые из внешнего API либо записанные через форму на странице сайта, которые могут иметь вложенные списки, или иногда вложенные объекты.
Пример json структуры которая будет записываться через форму и приходить по API:

"FormsID": 1,
"make": {
      "1_new": 21,
      "2_new": 16,
      "right": 80,
      "left": 10,
      },
   "static": [
      {
         "name": " 1",
         "number": 1,
         "id":93,
         "day": {
            "start": 7,
            "end": 23,}}]


На данный момент задача реализована частично, объясняю. Мой файл models.py:

from djongo import models

class StaticForms(models.Model):
    FormsID=models.ObjectIdField(primary_key=True)
    make = models.JSONField()
    static=models.JSONField()
    day=models.JSONField()


Далее уже в файле views.py я добавляю нужные ключи уже в make, static и day.
Мой файл views.py:

from django.views.decorators.csrf import csrf_exempt
from django.http.response import JsonResponse, HttpResponse
from FirstApp.models import StaticForms

@csrf_exempt
def forms_post(request):
    make = {"1_new":request.POST.get("1_new"),
                 "2_new":request.POST.get("2_new"),
                 "right":request.POST.get("right"),
                 "left":request.POST.get("left"),}

    static = {"name":request.POST.get("name"),
                 "number":request.POST.get("number"),
                 "id":request.POST.get("id")}

    day = {"start":request.POST.get("start"),
              "end":request.POST.get("end")}

    post = StaticForms(FormsID=request.POST.get("FormsID"),
                    make=make,
                    static=static,
                    day=day)
    post.save()
    return HttpResponse("Inserted")


После добавления данных через Postman я получаю следующую JSON структуру. (отличается от требуемой):
"make": {
      "1_new": 21,
      "2_new": 16,
      "right": 80,
      "left": 10,
      },
   "static": {
         "name": " 1",
         "number": 1,
         "id":93}
   "day": {
         "start": 7,
         "end": 23,}


1) Как мне вложить dict "day" в dict "static" чтобы получилось, как в моем первом примере?
2) почему отсутствует поле "FormsID"?
  • Вопрос задан
  • 272 просмотра
Подписаться 2 Средний Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы