Django Rest API из базы данных

У меня есть 2 API из моего существующего проекта. Один предоставляет последние записи в блоге, а другой - детали сортировки. Второй API (сортировка) предоставляет ID постов блога и порядковый номер, который должен быть в 1-ой, 2-ой, 3-ей...n-ой позиции. Если я отфильтрую в первом API с заданным ID, я смогу получить подробную информацию о блоге.

Как я могу создать Django REST API из базы данных? Или API, объединяющий эти 2 API? Любой учебник или ссылка, которые могут мне помочь?

Frist API Response:

{
  "count": 74,
  "next": "https://cms.example.com/api/v2/stories/?page=2",
  "previous": null,
  "results": [
    {
      "id": 111,
      "meta": {
        "type": "blog.CreateStory",
        "seo_title": "",
        "search_description": "",
        "first_published_at": "2022-10-09T07:29:17.029746Z"
      },
      "title": "A Test Blog Post"
},
{
      "id": 105,
      "meta": {
        "type": "blog.CreateStory",
        "seo_title": "",
        "search_description": "",
        "first_published_at": "2022-10-08T04:45:32.165072Z"
      },
      "title": "Blog Story 2"
},

2-й ответ API

[
  {
    "featured_item": 1,
    "sort_order": 0,
    "featured_page": 105
  },
  {
    "featured_item": 1,
    "sort_order": 1,
    "featured_page": 90
  },

Здесь я хочу создать другой API, который будет предоставлять больше деталей о сортировке, например, он будет сортировать так https://cms.example.com/api/v2/stories/105 и ловить Title, Image & Excerpt, и если нет данных из деталей сортировки, он будет показывать ответ первого API по умолчанию

После поиска я нашел, что вы можете сделать API из базы данных. В настройке вам нужно установить учетные данные базы данных, а затем создать класс внутри вашего models.py и внутри мета класса вам нужно установить мета имя db_table, а затем создать serializers.py и views.py, как вы создаете REST API.

class SortAPI(models.Model):
    featured_item_id = models.IntegerField()
    sort_order = models.IntegerField()
    title=models.TextField()
    first_published_at=models.DateTimeField()
    alternative_title= models.TextField()
    excerpt=models.TextField()
    sub_heading=models.TextField()
    news_slug=models.TextField()
    img_title=models.TextField()
    img_url=models.TextField()
    img_width=models.IntegerField()
    img_height=models.IntegerField()

    class Meta:
        db_table = 'view_featured'
Вернуться на верх