Как получить 2 данных и интегрировать их в представление api?
body
Мне нужна помощь, пожалуйста. Я собираюсь создать API для абстрактного/легкого, поэтому пишу код следующим образом:
Python3.9
Django 3.2
gunicorn
psycopg2-binary
requests
#models.py
from django.conf import settings
class Abstracts(models.Model):
title = models.TextField(max_length=100)
first_author = models.CharField(max_length=100, blank=True, null=False)
first_author_unit = models.CharField(max_length=100, blank=True, null=False)
author_list = models.TextField(null=True)
author_unit_list = models.TextField(null=True)
#views.py
from .models import Abstracts
from django.shortcuts import get_object_or_404
from django.http import JsonResponse
def api_abstract_view(request, id):
# API get abstract
apiabs = get_object_or_404(Abstracts, pk=id)
datas = {
"title": apiabs.title,
"first_author":{"name":apiabs.first_author, "unit":[apiabs.first_author_unit]},
"author_list": {"name":apiabs.author_list, "unit":[apiabs.author_unit_list]},
}
return JsonResponse({"abstract": datas})
#url.py
from .views import api_abstract_view
app_name = 'abstracts'
urlpatterns = [
path("apiabstractview/<int:id>/", api_abstract_view, name="api_abstract_view"),
]
Вывод json
Реферат был создан, json, который я получил после доступа к id по url: http://127.0.0.1:8000/apiabstractview/9/
API URL : http://127.0.0.1:8000/apiabstractview/9/
{
"abstract": {
"title": The name of Title,
"first_author": {
"name": "First Author",
"unit": ["C School", "A School", "D School"]
},
"author_list": {
"name": "2 author, 3 author",
"unit": ["A School, B School, C School"]
},
}
}
HOWEVER....
Помогите, пожалуйста, что мне делать? Как показано ниже.
Результат JSON, я надеюсь, выглядит следующим образом:
author_list должен быть выделен как свойство по отдельности.
{
"abstract": {
"title": The name of Title,
"first_author": {
"name": "First Author",
"unit": ["C School", "A School", "D School"]
},
"author_list": [
{
"name": "2 Author",
"unit": ["A School","B School"]
},
{
"name": "3 Author"
"unit":["C School"]
}
],
}
}